完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
NewCalc(数学题解答器)是一款比较专业的数学解题辅导软件,可以帮助老师家长来辅导孩子学习数学,帮助孩子夯实基础,推荐下载。
NewCalc是一款非常实用的数学题解答器,软件研发的最终目的在于:能将老师或学生输入(相关规定下)的数学题目(四则混合运算,方程,应用题等)自动将计算过程、结果以及解题过程进行说明,为大家的教学数学及学习提供一定帮助。
"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:454.14 KB
class CalcBtn extends JButton { private static final long serialVersionUID = 1L; Font font = new Font("仿宋", 1, 22); public CalcBtn(String text, Color color) { super(text); setForeground(color); setFont(font); setMargin(new Insets(0, 0, 0, 0)); setFocusable(false); } } @SuppressWarnings("serial") public class CalcFrame extends JFrame implements ActionListener { public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception ex) { ex.printStackTrace(); } new CalcFrame().setVisible(true); } private CalcBtn btn_1 = new CalcBtn("1", Color.BLUE); private CalcBtn btn_2 = new CalcBtn("2", Color.BLUE); private CalcBtn btn_3 = new CalcBtn("3", Color.BLUE); private CalcBtn btn_4 = new CalcBtn("4", Color.BLUE); private CalcBtn btn_5 = new CalcBtn("5", Color.BLUE); private CalcBtn btn_6 = new CalcBtn("6", Color.BLUE); private CalcBtn btn_7 = new CalcBtn("7", Color.BLUE); private CalcBtn btn_8 = new CalcBtn("8", Color.BLUE); private CalcBtn btn_9 = new CalcBtn("9", Color.BLUE); private CalcBtn btn_0 = new CalcBtn("0", Color.BLUE); private CalcBtn btn_back = new CalcBtn("←", Color.red); private CalcBtn btn_c = new CalcBtn("C", Color.red); private CalcBtn btn_ce = new CalcBtn("CE", Color.red); private CalcBtn btn_sub = new CalcBtn("-", Color.red); private CalcBtn btn_multi = new CalcBtn("*", Color.red); private CalcBtn btn_div = new CalcBtn("/", Color.red); private CalcBtn btn_add = new CalcBtn("+", Color.red); private CalcBtn btn_sqrt = new CalcBtn("sqrt", Color.BLUE); private CalcBtn btn_mod = new CalcBtn("%", Color.BLUE); private CalcBtn btn_x = new CalcBtn("1/x", Color.BLUE); private CalcBtn btn_res = new CalcBtn("=", Color.red); private CalcBtn btn_point = new CalcBtn(".", Color.red); private CalcBtn btn_flag = new CalcBtn("+/-", Color.BLUE); private JButton btn_mem = new JButton(""); private CalcBtn btn_m = new CalcBtn("M+", Color.BLUE); private CalcBtn btn_mc = new CalcBtn("MC", Color.BLUE); private CalcBtn btn_mr = new CalcBtn("MR", Color.BLUE); private CalcBtn btn_ms = new CalcBtn("MS", Color.BLUE); JPanel pan_jtf = new JPanel(); JPanel pan_back = new JPanel(); JPanel pan_mem = new JPanel(); JPanel pan_num = new JPanel(); JTextField jtf_res = new JTextField(); // private JMenuBar menuBar = new JMenuBar(); private JMenu menu_edit = new JMenu("编辑(E)"); private JMenu menu_view = new JMenu("查看(V)"); private JMenu menu_help = new JMenu("帮助(H)"); private JMenuItem editMenu_copy = new JMenuItem("复制(C)"); private JMenuItem editMenu_paste = new JMenuItem("粘贴(P)"); private JCheckBoxMenuItem viewmenu_standard = new JCheckBoxMenuItem( "标准型(T)"); private JCheckBoxMenuItem viewmenu_science = new JCheckBoxMenuItem("科学型(S)"); private JCheckBoxMenuItem viewmenu_grouping = new JCheckBoxMenuItem( "数字分组(I)"); private JMenuItem helpmenu_help = new JMenuItem("帮助主题(H)"); private JMenuItem helpmenu_about = new JMenuItem("关于计算器(A)"); String save1, save2; BigDecimal op1, op2; boolean isBigDecimal = false; int preOp, currentOp = 0; StringBuffer str = new StringBuffer(); public CalcFrame() { this.setTitle(" 於 ☆ 弦 "); this.setResizable(false); setSize(444, 390); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setJMenuBar(menuBar); setLayout(null); init_pan_jtf(); init_menuBar(); init_pan_back(); init_pan_mem(); init_pan_num(); getContentPane().add(pan_jtf); getContentPane().add(pan_back); getContentPane().add(pan_mem); getContentPane().add(pan_num); } private void init_menuBar() { menuBar.add(menu_edit); menuBar.add(menu_view); menuBar.add(menu_help); menu_edit.add(editMenu_copy); menu_edit.add(editMenu_paste); menu_view.add(viewmenu_standard); menu_view.add(viewmenu_science); menu_view.addSeparator(); menu_view.add(viewmenu_grouping); menu_help.add(helpmenu_help); menu_help.addSeparator(); menu_help.add(helpmenu_about); menu_edit.setMnemonic('E'); menu_view.setMnemonic('V'); menu_help.setMnemonic('H'); editMenu_copy.setMnemonic('C'); editMenu_copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK)); editMenu_paste.setMnemonic('P'); editMenu_paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK)); viewmenu_standard.setMnemonic('T'); viewmenu_science.setMnemonic('S'); viewmenu_grouping.setMnemonic('I'); helpmenu_help.setMnemonic('H'); helpmenu_about.setMnemonic('A'); } public void init_pan_back() { pan_back.setSize(340, 40); pan_back.setLocation(85, 60); pan_back.setLayout(new GridLayout(1, 3, 5, 0)); pan_back.add(btn_back); pan_back.add(btn_ce); pan_back.add(btn_c); btn_back.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!jtf_res.getText().trim().equals("0.")) { if (str.length() != 1 && str.length() != 0) { jtf_res.setText(str.delete(str.length() - 1, str.length()).toString()); } else { jtf_res.setText("0."); str.setLength(0); } } op2 = new BigDecimal(jtf_res.getText().trim()); } }); btn_c.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jtf_res.setText("0."); op1 = op2 = new BigDecimal(0); str.replace(0, str.length(), " "); preOp = currentOp = 0; } }); btn_ce.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jtf_res.setText("0."); } }); } public void init_pan_jtf() { jtf_res.setHorizontalAlignment(JTextField.RIGHT); jtf_res.setFont(new Font("仿宋", 0, 20)); jtf_res.setText("0."); jtf_res.setEditable(false); // jtf_res.setFocusable(false); pan_jtf.setSize(420, 40); pan_jtf.setLocation(10, 5); pan_jtf.setLayout(new BorderLayout()); pan_jtf.add(jtf_res); } public void init_pan_mem() { pan_mem.setSize(60, 270); pan_mem.setLocation(10, 60); pan_mem.setLayout(new GridLayout(5, 1, 0, 5)); pan_mem.add(btn_mem); btn_mem.setEnabled(false); pan_mem.add(btn_mc); pan_mem.add(btn_mr); pan_mem.add(btn_ms); pan_mem.add(btn_m); } public void init_pan_num() { pan_num.setSize(340, 220); pan_num.setLocation(85, 110); pan_num.setLayout(new GridLayout(4, 5, 5, 5)); pan_num.add(btn_7); pan_num.add(btn_8); pan_num.add(btn_9); pan_num.add(btn_div); pan_num.add(btn_sqrt); pan_num.add(btn_4); pan_num.add(btn_5); pan_num.add(btn_6); pan_num.add(btn_multi); pan_num.add(btn_mod); pan_num.add(btn_1); pan_num.add(btn_2); pan_num.add(btn_3); pan_num.add(btn_sub); pan_num.add(btn_x); pan_num.add(btn_0); pan_num.add(btn_flag); pan_num.add(btn_point); pan_num.add(btn_add); pan_num.add(btn_res); btn_1.addActionListener(this); btn_2.addActionListener(this); btn_3.addActionListener(this); btn_4.addActionListener(this); btn_5.addActionListener(this); btn_6.addActionListener(this); btn_7.addActionListener(this); btn_8.addActionListener(this); btn_9.addActionListener(this); btn_0.addActionListener(this); btn_sub.addActionListener(this); btn_multi.addActionListener(this); btn_div.addActionListener(this); btn_add.addActionListener(this); btn_sqrt.addActionListener(this); btn_x.addActionListener(this); btn_res.addActionListener(this); btn_point.addActionListener(this); btn_flag.addActionListener(this); // btn_mod.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); BigDecimal i = new BigDecimal(1); String temp = jtf_res.getText().trim(); BigDecimal temp1 = new BigDecimal(temp); if (e.getSource() == btn_flag) { BigDecimal temp3 = new BigDecimal(jtf_res.getText()); BigDecimal temp4 = new BigDecimal(-1); BigDecimal temp5 = temp3.multiply(temp4); jtf_res.setText("" + temp5); } else if (s.equals("1/x")) { jtf_res.setText("" + i.divide(temp1, new MathContext(30))); } else if (s.equals("sqrt")) { jtf_res.setText("" + temp1.multiply(temp1)); } else if (s.equals("+")) { str.setLength(0); if (currentOp == 0) { preOp = currentOp = 1; op2 = new BigDecimal("0"); jtf_res.setText("" + op1); } else { currentOp = preOp; preOp = 1; switch (currentOp) { case 1: op1 = op1.add(op2); jtf_res.setText("" + op1); break; case 2: op1 = op1.subtract(op2); jtf_res.setText("" + op1); break; case 3: op1 = op1.multiply(op2); jtf_res.setText("" + op1); break; case 4: op1 = op1.divide(op2, new MathContext(30)); jtf_res.setText("" + op1); break; } } } else if (s.equals("-")) { str.setLength(0); if (currentOp == 0) { preOp = currentOp = 2; jtf_res.setText("" + op1); } else { currentOp = preOp; preOp = 2; switch (currentOp) { case 1: op1 = op1.add(op2); jtf_res.setText("" + op1); break; case 2: op1 = op1.subtract(op2); jtf_res.setText("" + op1); break; case 3: op1 = op1.multiply(op2); jtf_res.setText("" + op1); break; case 4: op1 = op1.divide(op2, new MathContext(30)); jtf_res.setText("" + op1); break; } } } else if (s.equals("*")) { str.setLength(0); if (currentOp == 0) { preOp = currentOp = 3; jtf_res.setText("" + op1); } else { currentOp = preOp; preOp = 3; switch (currentOp) { case 1: op1 = op1.add(op2); jtf_res.setText("" + op1); break; case 2: op1 = op1.subtract(op2); jtf_res.setText("" + op1); break; case 3: op1 = op1.multiply(op2); jtf_res.setText("" + op1); break; case 4: op1 = op1.divide(op2, new MathContext(30)); jtf_res.setText("" + op1); break; } } } else if (s.equals("/")) { str.setLength(0); if (currentOp == 0) { preOp = currentOp = 4; jtf_res.setText("" + op1); } else { currentOp = preOp; preOp = 4; switch (currentOp) { case 1: op1 = op1.add(op2); jtf_res.setText("" + op1); break; case 2: op1 = op1.subtract(op2); jtf_res.setText("" + op1); break; case 3: op1 = op1.multiply(op2); jtf_res.setText("" + op1); break; case 4: op1 = op1.divide(op2, new MathContext(30)); jtf_res.setText("" + op1); break; } } } else if (s.equals("=")) { if (currentOp == 0) { str.setLength(0); jtf_res.setText("" + op2); } else { str.setLength(0); currentOp = preOp; switch (currentOp) { case 1: op1 = op1.add(op2); jtf_res.setText("" + op1); break; case 2: op1 = op1.subtract(op2); jtf_res.setText("" + op1); break; case 3: op1 = op1.multiply(op2); jtf_res.setText("" + op1); break; case 4: op1 = op1.divide(op2, new MathContext(30)); jtf_res.setText("" + op1); break; } currentOp = 0; op2 = new BigDecimal("0"); } } else if (s.equals(".")) { isBigDecimal = true; if (jtf_res.getText().trim().indexOf('.') != -1) ; else { if (jtf_res.getText().trim().equals("0")) { str.setLength(0); jtf_res.setText((str.append("0" + s)).toString()); } else if (jtf_res.getText().trim().equals("")) { } else { jtf_res.setText((str.append(s)).toString()); } } } else if (s.equals("0")) { if (jtf_res.getText().trim().equals("0.")) { } else { jtf_res.setText(str.append(s).toString()); op2 = new BigDecimal(jtf_res.getText().trim()); } } else { jtf_res.setText(str.append(s).toString()); op2 = new BigDecimal(jtf_res.getText().trim()); if (currentOp == 0) op1 = op2; } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 public class Calc extends JFrame { private JTextField textNum1; private JTextField textNum2; private JTextField result; private JComboBox opers; public Calc() { init(); setSize(300,400); setLocationRelativeTo(null); setTitle("计算器"); setDefaultCloseOperation(3); setVisible(true); } private void init(){ String[] operators = "+,-,*,/".split(","); textNum1 = new JTextField(); textNum1.setColumns(10); textNum2 = new JTextField(); textNum2.setColumns(10); result = new JTextField(); result.setColumns(10); opers = new JComboBox(operators); opers.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int operator = opers.getSelectedIndex(); double num1 = Double.parseDouble(textNum1.getText()); double num2 = Double.parseDouble(textNum2.getText()); switch(operator){ case 0:result.setText(num1 + num2+"");break; case 1:result.setText(num1 - num2+"");break; case 2:result.setText(num1 * num2+"");break; case 3:result.setText(num1 / num2+"");break; } } }); JPanel p = new JPanel(); p.add(textNum1); p.add(textNum2); p.add(opers); p.add(result); this.add(p); } public static void main(String[] args) { new Calc(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Calc { class Calc { private string expression; public Calc() { expression = "0"; } public Calc(string exp) { expression = exp; } public string Expression { set { Expression = value; } get { return (expression); } } /// <summary> /// 四则运算 /// </summary> /// <returns>返回结果</returns> public double EvaluateExpression() { try { string myExp = expression + "="; //表达式。。 Stack<char> optr = new Stack<char>(myExp.Length); //存放操作符栈。。 Stack<double> opnd = new Stack<double>(myExp.Length); //存放操作数栈。。 optr.Push('='); int index = 0; //字符索引。。 char c = myExp.ToCharArray()[index++]; //读取每一个字符。。 bool isFloat = false; //是否为小数。。 bool isNum = false; //是否为数字。。 int floatBit = 0; //小数数位。。 double num1, num2; while ((c != '=') || (optr.Peek() != '=')) { if ((c >= '0') && (c <= '9')) { if (isNum) { if (isFloat) { floatBit++; opnd.Push(opnd.Pop() + ((int)c - 48.0) / Math.Pow(10, floatBit)); } else { opnd.Push(opnd.Pop() * 10 + (int)c - 48); } } else { opnd.Push((int)c - 48); isNum = true; } c = myExp.ToCharArray()[index++]; } else { if ((c == '.') && (isNum)) { isFloat = true; floatBit = 0; c = myExp.ToCharArray()[index++]; } else { isNum = false; isFloat = false; switch (Precede(optr.Peek(), c)) { case '<': optr.Push(c); c = myExp.ToCharArray()[index++]; break; case '=': optr.Pop(); c = myExp.ToCharArray()[index++]; break; case '>': num2 = opnd.Pop(); num1 = opnd.Pop(); opnd.Push(Operate(num1, optr.Pop(), num2)); break; default: break; } } } } return opnd.Pop(); } catch(Exception) { throw new Exception("表达式不合法"); } } //判断优先级。。 private char Precede(char optr1, char optr2) { //定义一个比较结果(用二维数组存下来)。。 char[,] optrTable = { { '>', '>', '<', '<', '<', '>', '>' }, { '>', '>', '<', '<', '<', '>', '>' }, { '>', '>', '>', '>', '<', '>', '>' }, { '>', '>', '>', '>', '<', '>', '>' }, { '<', '<', '<', '<', '<', '=', '?' }, { '>', '>', '>', '>', '?', '>', '>' }, { '<', '<', '<', '<', '<', '?', '=' } }; int x = 0, y = 0;//申明存符号转化后的整数。。 //定义一个符号数组。。 char[] optrs = { '+', '-', '*', '/', '(', ')', '=' }; for (int i = 0; i < optrs.Length; ++i) { if (optr1 == optrs[i]) x = i; if (optr2 == optrs[i]) y = i; } if (optrTable[x, y] == '?') { throw new Exception("表达式不合法"); } else { return optrTable[x, y]; } } //计算两值,得出相应结果。。 private double Operate(double a, char optr, double b) { double result = default(double); switch (optr) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': if (b < Math.Pow(10, 0.000001)) { throw new Exception("除数为0"); } result = a / b; break; default: break; } return result; } } } 我写了一个Calc类。。能够进行包括括号在内的简单的四则运算,。。 成员变量expression为算术表达式,string类型。。 方法EvaluateExpression(),计算结果,用double返回。。 使用的时候可以这样。。 Calc myCalc = new Calc(“3+4*5”); label1.Text = "计算结果为:" + myCalc.Expression; 给个范例: private void button1_Click(object sender, EventArgs e) { Calc myCalc = new Calc(textBox1.Text); label1.Text = "= " + myCalc.Expression; try { label1.Text = "= " + myCalc.EvaluateExpression(); } catch(Exception) { label1.Text = "= " + "不合法"; } } 运行结果如下。。 不知道是否符合您的要求。。
我还是要说:一个输出,一个抛出异常. 一个是正常的输出,你可以输出任何东西。 一个是异常,是程序出错。只不过在console程序中,这个异常通常通过控制台(就是那个黑窗口)输出信息而已。 抛出异常之后,当前的程序就终止了。