武汉理工大学《软件开发工具》课程论文
text_double=new JTextField(\设置文本区
text_double.setHorizontalAlignment(JTextField.RIGHT);//设置水平对齐方式未右对齐
this.getContentPane().add(text_double,BorderLayout.NORTH);//将文本区添加到Content北部
JPanel panel=new JPanel(new GridLayout(5,4));//在内容窗口添加一个网格布局
this.getContentPane().add(panel);//添加panel面板 for(int i=0;i for(int i=0;i button[i].addActionListener(this);//为按钮注册 text_double.setEditable(false);//文本框不可编辑 text_double.addActionListener(this); this.setVisible(true); } public void actionPerformed(ActionEvent e) { String c= e.getActionCommand();//返回与此动作相关的命令字符串。 if(c.equals(\ handleC(); //用户按了“C”键 } else if (c.equals(\ // 用户按了\键 { text_double.setText(\ } else if (\用户按了数字键或者小数点键 { handleNumber(c); // handlezero(zero); } else //用户按了运算符键 { handleOperator(c); } } private void handleC() // 初始化计算器的各种值 { text_double.setText(\ firstDigit = true; 4 武汉理工大学《软件开发工具》课程论文 operator = \ } private void handleNumber(String button) { if (firstDigit)//输入的第一个数字 { text_double.setText(button); } else if ((button.equals(\输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 //如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1 { text_double.setText(text_double.getText() + \ } else if (!button.equals(\ 如果输入的不是小数点,则将数字附在结果文本框的后面 { text_double.setText(text_double.getText() + button); } // 以后输入的肯定不是第一个数字了 firstDigit = false; } private void handleOperator(String button) { if (operator.equals(\// 除法运算 // 如果当前结果文本框中的值等于0 if (getNumberFromText() == 0.0){ // 操作不合法 operateValidFlag = false; text_double.setText(\除数不能为零\ } else { resultNum /= getNumberFromText(); } } else if (operator.equals(\// 加法运算 resultNum += getNumberFromText(); } else if (operator.equals(\// 减法运算 resultNum -= getNumberFromText(); } else if (operator.equals(\ 5 武汉理工大学《软件开发工具》课程论文 // 乘法运算 resultNum *= getNumberFromText(); } else if (operator.equals(\// 平方根运算 if(getNumberFromText()<0){ operateValidFlag = false; text_double.setText(\被开方数不能为负数\ else resultNum = Math.sqrt(resultNum); } else if (operator.equals(\// 正数负数运算 resultNum = resultNum * (-1); } else if (operator.equals(\// 赋值运算 resultNum = getNumberFromText(); } if (operateValidFlag) { // 双精度浮点数的运算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { text_double.setText(String.valueOf(t1)); } else { text_double.setText(String.valueOf(resultNum)); } } operator = button; //运算符等于用户按的按钮 firstDigit = true; operateValidFlag = true; } private double getNumberFromText() //从结果的文本框获取数字 { double result = 0; try { result = Double.valueOf(text_double.getText()).doubleValue(); // ValueOf() 6 武汉理工大学《软件开发工具》课程论文 返回表示指定的 double 值的 Double 实例 } catch (NumberFormatException e){ } return result; } public static void main(final String[] args) { new Calculator(); } } 8.调试结果截图 (1)加法运算:956+358 (3)乘法运算:556*637 2)减法运算:1628-703 4)除法运算:372/48 7(( 武汉理工大学《软件开发工具》课程论文 9.总结体会 任何工作都没有懈怠的理由,看似简单的运算器程序,编译起来确是另一番滋味,需要注意界面的设计,按钮的构造,算法的编程,精度的把握,每一个方面都需要仔细认真的去思考,去实践。失败挫折是难免的,这时需要的就是永不放弃的精神,个人力量有限,但群体的力量强大,所以难免需要请教他人,查阅资料,在此基础上再加上勤加思考,勇于实践,最后终于成功完成计算器程序。这个过程,对于我来说获益匪浅。 参考文献 [1] 李文新、郭炜、余华山. 程序设计导引及实践[M]. 北京:清华大学出版社 [2] 史斌星、史佳. 新编Java实用教程[M]. 北京:清华大学出版社 [3] 辛运帏 饶一梅 张钧. Java程序设计[M]. 北京:清华大学出版社 [4] 李大卓 刘海. Eclipse核心编程[M]. 北京:清华大学出版社 8