⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 ⑴定义组件:0~9,+、-、*、/、sqrt()、1/x、%、C=按钮;显示屏文本行;菜单; ⑵要求能关闭窗口;点击按钮
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		{
			try
			{
				if(textAnswer.getText()!="")
			{
				//对文本框中的数据进行转换
			if(jb_16==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),16).toString());
			if(jb_8==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),8).toString());
			if(jb_2==true) textAnswer.setText(Integer.valueOf(textAnswer.getText(),2).toString());
			}
			}catch(NumberFormatException ie){}
			
			//设置标志位
			jb_10=true; jb_16=false; jb_8=false; jb_2=false;
			//更改按钮的状态
			buttonsin.setEnabled(true); buttoncos.setEnabled(true);
		        buttontan.setEnabled(true); buttonasin.setEnabled(true);
		        buttonacos.setEnabled(true); buttonatan.setEnabled(true);
		        buttonA.setEnabled(false); buttonB.setEnabled(false);
		        buttonc.setEnabled(false); buttonD.setEnabled(false);
		        buttonE.setEnabled(false);buttonF.setEnabled(false);
		        button[8].setEnabled(true); button[9].setEnabled(true);
		        button[3].setEnabled(true); button[4].setEnabled(true);
		        button[5].setEnabled(true); button[6].setEnabled(true);
		        button[7].setEnabled(true); buttonDot.setEnabled(true);
		        button[2].setEnabled(true);
			
		}
		else if(temp.getLabel()=="八进制")
		{
			try
			{
				if(textAnswer.getText()!="")
			{
				//对文本框中的数据进行转换
			if(jb_16==true) {String k=Integer.valueOf(textAnswer.getText(),16).toString();
			textAnswer.setText(Integer.toOctalString(Integer.parseInt(k)));
            	}
			else if(jb_10==true) textAnswer.setText(Integer.toOctalString(Integer.parseInt(textAnswer.getText())));
			else if(jb_2==true)  {String k=Integer.valueOf(textAnswer.getText(),2).toString();
			textAnswer.setText(Integer.toOctalString(Integer.parseInt(k)));
            	}
			}
			}catch(NumberFormatException ie){}
			
            //设置标志位
			jb_10=false; jb_16=false; jb_8=true; jb_2=false;
			//更改按钮的状态
			button[8].setEnabled(false); button[9].setEnabled(false);
			buttonsin.setEnabled(false); buttoncos.setEnabled(false);
		        buttontan.setEnabled(false); buttonasin.setEnabled(false);
		        buttonacos.setEnabled(false); buttonatan.setEnabled(false);
		        buttonA.setEnabled(false); buttonB.setEnabled(false);
		        buttonc.setEnabled(false); buttonD.setEnabled(false);
		        buttonE.setEnabled(false);buttonF.setEnabled(false);
		        button[3].setEnabled(true); button[4].setEnabled(true);
		        button[5].setEnabled(true); button[6].setEnabled(true);
		        button[7].setEnabled(true); buttonDot.setEnabled(false);
		        button[2].setEnabled(true);
			
		}
		else if(temp.getLabel()=="二进制")
		{
			try
			{
				if(textAnswer.getText()!="")
			{
				//对文本框中的数据进行转换
			if(jb_16==true) {String k=Integer.valueOf(textAnswer.getText(),16).toString();
			textAnswer.setText(Integer.toBinaryString(Integer.parseInt(k)));
            	}
           	else if(jb_10==true) textAnswer.setText(Integer.toBinaryString(Integer.parseInt(textAnswer.getText())));
           	else if(jb_8==true) {String k=Integer.valueOf(textAnswer.getText(),2).toString();
			textAnswer.setText(Integer.toBinaryString(Integer.parseInt(k)));
            	}
			}
			}catch(NumberFormatException ie){}
			
             //设置标志位
			jb_10=false; jb_16=false; jb_8=false; jb_2=true;
			//更改按钮的状态
			button[3].setEnabled(false); button[4].setEnabled(false);
		    button[5].setEnabled(false); button[6].setEnabled(false);
		    button[7].setEnabled(false); button[8].setEnabled(false);
		    button[9].setEnabled(false); button[2].setEnabled(false);
		    buttonsin.setEnabled(false); buttoncos.setEnabled(false);
		    buttontan.setEnabled(false); buttonasin.setEnabled(false);
		    buttonacos.setEnabled(false); buttonatan.setEnabled(false);
		    buttonA.setEnabled(false); buttonB.setEnabled(false);
		    buttonc.setEnabled(false); buttonD.setEnabled(false);
		    buttonE.setEnabled(false);buttonF.setEnabled(false);
		    buttonDot.setEnabled(false);
		}
		
	}

	private double math(int prekey, String x)
	{
		if(jb_16==true) x=Integer.valueOf(x,16).toString();  //将十六进制转换为十进制
		else if(jb_8==true) x=Integer.valueOf(x,8).toString(); //将八进制转换为十进制
		else if(jb_2==true) x=Integer.valueOf(x,2).toString(); //将二进制转换为十进制
		else x=x;  //十进制保持不变
		System.out.println(x);
		switch (prekey) {
            case 0:
              answerd += Double.parseDouble(x);  //加法运算
              break;
            case 1:
              answerd -= Double.parseDouble(x);  //减法运算
              break;
            case 2:
              answerd *= Double.parseDouble(x);   //乘法运算
              break;
            case 3:                                //除法运算
              if (Double.parseDouble(x) == 0) {
                textAnswer.setText("除数不能为零");
                clickable = false;
              }
              else
                answerd /= Double.parseDouble(x);
              break;
            case 4:
              {                         //X的Y次方
              	int k=(int)answerd;
              	for(int i=2;i<=Integer.parseInt(x);i++) answerd *=k;
              }
              break;
            default:
              answerd = Double.parseDouble(x);  //等号运算
              }
              return answerd;
   	}
   	private String ten_chang(int x)
   	{
   		String k="";
   		if(jb_16==true) k=Integer.toHexString(x);  //将十进制转换为十六进制
		else if(jb_8==true) k=Integer.toOctalString(x);//将十进制转换为八进制
		else if(jb_2==true) k=Integer.toBinaryString(x); //将十进制转换为二进制
		System.out.println(k);
		return k;
   	}
   	private String chang_ten(String x)  
   	{
   		String k="";
   		if(jb_16==true) k=Integer.valueOf(x,16).toString();  //将十六进制转换为十进制
		else if(jb_8==true) k=Integer.valueOf(x,8).toString(); //将八进制转换为十进制
		else if(jb_2==true) k=Integer.valueOf(x,2).toString(); //将二进制转换为十进制
		else k=x;  //十进制保持不变
		return k;
   	}

  //设置各个按钮行为
  public void actionPerformed(ActionEvent event) {
    boolean sign = false; //判断是否是double型数参与运算,是为true,不是为false
    Object temp = event.getSource();
    try {
      //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后
      for (int i = 0; i <= 9; i++)
        if (temp == button[i] && clickable == true)
          textAnswer.setText(textAnswer.getText() + Integer.toString(i));
      if(temp ==buttonA && clickable == true) textAnswer.setText(textAnswer.getText() + "A");
       else if(temp ==buttonF && clickable == true) textAnswer.setText(textAnswer.getText() + "F");
       else if(temp ==buttonB && clickable == true) textAnswer.setText(textAnswer.getText() + "B");
       else if(temp ==buttonc && clickable == true) textAnswer.setText(textAnswer.getText() + "C");
       else if(temp ==buttonD && clickable == true) textAnswer.setText(textAnswer.getText() + "D");
       else if(temp ==buttonE && clickable == true) textAnswer.setText(textAnswer.getText() + "E");
          //按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'
      if (temp == buttonDot && clickable == true) {
        boolean isDot = false;
        if (textAnswer.getText().length() == 0)
          isDot = true;
        for (int i = 0; i < textAnswer.getText().length(); i++)
          if ('.' == textAnswer.getText().charAt(i)) {
            isDot = true;
            break;
          }
        if (isDot == false)
          textAnswer.setText(textAnswer.getText() + ".");
      }
      if ( (temp == buttonAdd || temp == buttonSub || temp == buttonMul ||
            temp == buttonDiv) && clickable == true) {
        //'+'操作
        if (temp == buttonAdd) {math(prekey, textAnswer.getText());
          textAnswer.setText("");
          prekey = key = 0;}
        
        //'-'操作
        if (temp == buttonSub) {math(prekey, textAnswer.getText());
          textAnswer.setText("");
          prekey = key = 1;}
        
        //'*'操作
        if (temp == buttonMul) {
          math(prekey, textAnswer.getText());
          textAnswer.setText("");
          prekey = key = 2;
        }
        //'/'操作
        if (temp == buttonDiv) {
          math(prekey, textAnswer.getText());
          textAnswer.setText("");
          prekey = key = 3;
        }
      }
      //x的y次方运算
         if (temp == buttonxy)
         {
         	math(prekey, textAnswer.getText());
          textAnswer.setText("");
          prekey = key =4;
         }
      //'='操作
     if(temp==buttonEqual&&clickable==true){
        //如果连续按'=',则进行连续运算
        if(prekey==5){
          if(key==0){
            answerd+=vard;
            textAnswer.setText(df.format(answerd));
          }
          if(key==1){
            answerd-=vard;
            textAnswer.setText(df.format(answerd));
          }
          if(key==2){
            answerd*=vard;
            textAnswer.setText(df.format(answerd));
          }
          if(key==3){
            if(Double.parseDouble(textAnswer.getText())==0){
              textAnswer.setText("除数不能为零");
              clickable=false;
            }
            else{
              answerd/=vard;
              textAnswer.setText(df.format(answerd));
            }
          }
        }
        else{
          vard=Double.parseDouble(textAnswer.getText());
          if(key==0){
            prekey=-1;
            answerd+=Double.parseDouble(textAnswer.getText());
            textAnswer.setText(df.format(answerd));
          }
          if(key==1){
            prekey=-1;
            answerd-=Double.parseDouble(textAnswer.getText());
            textAnswer.setText(df.format(answerd));
          }
          if(key==2){
            prekey=-1;
            answerd*=Double.parseDouble(textAnswer.getText());
            textAnswer.setText(df.format(answerd));
          }
          if(key==3){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -