2012年计算机二级java计算器综合实例学习教程

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  else{

  value2+=String.valueOf(currentChar);

  if(value2.charAt(0)=='0'){//第一个数字为0

  value2="0";

  }

  fieldResult.setText(value2);

  }

  start = true;

  lastChar = str;

  }

  else{//是=

  resetAllValue();

  value1+=str;

  fieldResult.setText(value1);

  }

  printAllValue();

  }

  //处理"="键

  private void handalEqual(String str){

  if(Character.isDigit(lastChar.charAt(0)) && value2.length()>0){

  handalOper(str);

  }

  }

  //处理运算符,暂时只处理+,-,*,/str表示按钮上的文字

  private void handalOper(String str){

  if(start == true){

  if(value1.length()>0 && value2.length()>0){

  result=operationResult(value1,value2,oper.charAt(0));

  fieldResult.setText(result);

  if(!result.equals("除数不能为零")){

  value1=result;

  value2="";

  }

  }

  else{//说明第一个操作数输入结束,操作符结束,开始输入第二个操作数

  value1Input=false;

  value2Input=true;

  }

  oper = str;//记录操作符

  lastChar = str;//记录最后一个字符

  printAllValue();

  }

  }

  //处理非运算符,但不是数字,如Back,C等键,str表示按钮上的文字

  private void handalNonOper(String str){

  if(str.equals("Back")){//Back键处理

  if(Character.isDigit(lastChar.charAt(0)) == true){//必须是前一个字符是数字

  if(value2Input == true){

  if(value2.length()>0){

  value2 = value2.substring(0,value2.length()-1);

  }

  fieldResult.setText(value2);

  }

  else{

  if(value1.length()>0){

  value1 = value1.substring(0,value1.length()-1);

  }

  else{

  resetAllValue();

  }

  fieldResult.setText(value1);

  }

  }

  printAllValue();

  }

  if(str.equals("C")){//C键处理

  resetAllValue();

  fieldResult.setText("");

  printAllValue();

  }

  }

  //对两个字符串value1和value2表示的整数做运算,oper表示运算符

  private String operationResult(String value1,String value2,char oper){

  String result;

  try{

  switch(oper){

  case '+':

  result = String.valueOf(Integer.parseInt(value1)+Integer.parseInt(value2));

  break;

  case '-':

  result = String.valueOf(Integer.parseInt(value1)-Integer.parseInt(value2));

  break;

  case '*':

  result = String.valueOf(Integer.parseInt(value1)*Integer.parseInt(value2));

  break;

  case '/':

  if(value2.equals("0")){

  result="除数不能为零";

  resetAllValue();//所有值置初值

  }

  else{

  result = String.valueOf(Integer.parseInt(value1)/Integer.parseInt(value2));

  }

  break;

  default:

  result="error";

  }

  }

  catch(Exception ex){

  result = "操作数或结果超过整数范围";

  resetAllValue();

  }

  return result;

  }

  //重置变量值

  private void resetAllValue(){

  value1="";//第一个操作数

  value2="";//第二个操作数

  oper="";//操作符

  result="";//运算结果

  lastChar="";//相比当前,其上一个按下按钮的字符

  value1Input=true;//处于第一个操作数输入情况

  value2Input=false;//出于第二个操作数输入情况

  start = false;

  }

  //打印变量值

  private void printAllValue(){

  System.out.println("| --------Values display----------------");

  System.out.println("| value1:" + value1);

  System.out.println("| value2:" + value2);

  System.out.println("| oper:" + oper);

  System.out.println("| result:" + result);

  System.out.println("| lastChar:" + lastChar);

  System.out.println("| value1Input:" + value1Input);

  System.out.println("| value2Input:" + value2Input);

  System.out.println("| start:" + start);

  System.out.println("| --------------------------------------");

  }

  }

  }

  public class Calculator{

  public static void main(String[] args) {

  new Calculator("计算器");

  }

  }

  程序运行主界面如下:

图8-18 计算器程序运行主界面

  该程序实现了加减乘除运算,且充分考虑了各种异常情况,一般不会出现在按下某个按键时出现程序报异常的错误,对于程序中未实现的按钮功能,运行界面中都以灰色按钮的形式出现,读者可在研究本程序的基础上完成这些按键的功能。

  8.9 小结

  本章主要对Swing中的各种常用组件进行的详细说明,同时,对Swing的外观设置做了介绍,读者可以根据编程需要设置自己想要的外观,在本章的最后给出了一个综合实例—计算器。

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答