解一道java程序题

计算机功能的模拟,完成加减乘除的操作... 计算机功能的模拟,完成加减乘除的操作 展开
 我来答
yukinoGH4vP
推荐于2016-03-04 · 超过18用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:44.9万
展开全部

package com.jluzh.javabasic.ex8;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class CalculatorPro extends JApplet
{
     
      //定义计算器显示框;
      private JTextField jTextField1;
      //定义0-9按键;
      private JButton button0,button1,button2,button3,button4,button5,
                      button6,button7,button8,button9;
      //定义操作符和功能键;
      private JButton buttonPlus,buttonMinus,buttonMulti,buttonDivide;
      private JButton buttonEqual,buttonDot,buttonClear;

      private JPanel numbers; //定义数字面板
      double num1,num2,result;
      char operator;
      boolean next=false;
      boolean num1Exist=false;

      public void init()
      {    //布局
           Container c=this.getContentPane();
           BorderLayout bL=new BorderLayout();     
           c.setLayout (bL);
           //添加结果框         
           jTextField1=new JTextField("0");    
           c.add(jTextField1,BorderLayout.NORTH);
           jTextField1.setHorizontalAlignment(jTextField1.RIGHT);
           jTextField1.setBackground(Color.green);    
               numbers=new JPanel();
           
           GridLayout grid=new GridLayout(4,4,5,5);
           numbers.setLayout (grid);

           //生成数字键
           button0=new JButton("0");
           button1=new JButton("1");
           button2=new JButton("2");
           button3=new JButton("3");
           button4=new JButton("4");
           button5=new JButton("5");
           button6=new JButton("6");
           button7=new JButton("7");
           button8=new JButton("8");
           button9=new JButton("9");
           
           //生成功能键
           buttonPlus=new JButton("+");
               buttonPlus.setForeground(Color.blue);
           buttonMinus=new JButton("-");
               buttonMinus.setForeground(Color.blue);
           buttonMulti=new JButton("*");
               buttonMulti.setForeground(Color.blue);
           buttonDivide=new JButton("/");
               buttonDivide.setForeground(Color.blue);
           buttonEqual=new JButton("=");
               buttonEqual.setForeground(Color.red);
           buttonDot=new JButton(".");
           buttonClear=new JButton("Clear");
               buttonClear.setForeground(Color.red);
               buttonClear.setToolTipText("清除结果");
               

           //添加数字键和功能键
           numbers.add(button7);
           numbers.add(button8);
           numbers.add(button9);
           numbers.add(buttonDivide);
           numbers.add(button4);
           numbers.add(button5);
           numbers.add(button6);
           numbers.add(buttonMulti);
           numbers.add(button1);
           numbers.add(button2);
           numbers.add(button3);
           numbers.add(buttonMinus);
           numbers.add(button0);
           numbers.add(buttonDot);
           numbers.add(buttonEqual);
           numbers.add(buttonPlus);
           c.add (numbers,BorderLayout.CENTER);
           c.add(buttonClear,BorderLayout.SOUTH);
           c.setVisible (true);

           //事件监听器
           ButtonHandler handler=new ButtonHandler();
           button0.addActionListener(handler);
           button1.addActionListener(handler);
           button2.addActionListener(handler);
           button3.addActionListener(handler);
           button4.addActionListener(handler);
           button5.addActionListener(handler);
           button6.addActionListener(handler);
           button7.addActionListener(handler);
           button8.addActionListener(handler);
           button9.addActionListener(handler);
           buttonPlus.addActionListener(handler);
           buttonMinus.addActionListener(handler);
           buttonMulti.addActionListener(handler);
           buttonDivide.addActionListener(handler);
           buttonEqual.addActionListener(handler);
           buttonDot.addActionListener(handler);
           buttonClear.addActionListener(handler);
      }
      private class ButtonHandler implements ActionListener
      {
          public void actionPerformed(ActionEvent e)
          {
              String str=e.getActionCommand();
              char one=str.charAt(0);
              String original=jTextField1.getText ();
              int originalLen=original.length();
          double originalValue=Double.valueOf(original).doubleValue();
              switch(one)
              {
                  case '1':
                  case '2':
                  case '3':
                  case '4':
                  case '5':
                  case '6':
                  case '7':
                  case '8':
                  case '9':
                  case '0':
                              if(next==true)
                                {
                                 jTextField1.setText(str);
                                 next=false;
                                }
                            else
                                {
                                    if(originalLen<20)
                                    {
                                      if(original.equals("0") )
                                         jTextField1.setText (str);
                                      else
                                          jTextField1.setText (jTextField1.getText ()+str);
                                       }
                                }
                            break;
                  case '.':    if(next==true)
                                   {
                                    jTextField1.setText ("0.");
                                    next=false;
                                   }
                                else
                                          {
                                              if(originalLen<20)
                                          {
                                          if(original.indexOf(".")<0)
                                              jTextField1.setText (jTextField1.getText ()+str);                                          }
                                      }
                              break;
                  case '+': num1=Double.valueOf(original).doubleValue();
                            operator='+';
                            next=true;
                            //num1Exist=true;
                            break;
                  case '-': num1=Double.valueOf(original).doubleValue();
                            operator='-';
                            next=true;
                            //num1Exist=true;
                            break;
                  case '*': num1=Double.valueOf(original).doubleValue();
                            operator='*';
                            next=true;
                            //num1Exist=true;
                            break;
                  case '/': num1=Double.valueOf(original).doubleValue();
                            operator='/';
                            next=true;
                           // num1Exist=true;
                            break;
                  //计算并显示结果
                  case '=': //if(num1Exist==true)
                            //{
                                num2=Double.valueOf(original).doubleValue();
                                switch(operator)
                                {
                                    case'+':result=num1+num2;
                                            break;
                                    case'-':result=num1-num2;
                                            break;
                                    case'*':result=num1*num2;
                                            break;
                                    case'/':result=num1/num2;
                                            break;
                                  }
                                jTextField1.setText (String.valueOf(result));
                                next=true;
                                  break;
                  //清除结果
                  case 'C':jTextField1.setText ("0");
                            next=false;
                            //num1Exist=false;
                            break;
              }
          }
      }
}


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迷途小钻风
2013-12-24 · TA获得超过263个赞
知道小有建树答主
回答量:496
采纳率:50%
帮助的人:168万
展开全部
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JCalculator extends JFrame implements ActionListener {
private static final long serialVersionUID = -169068472193786457L;
private class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}

int i;
private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1",
"2", "3", "-", ".", "0", "=", "+" };
JButton[] buttons = new JButton[str.length];
JButton reset = new JButton("CE");
JTextField display = new JTextField("0");
public JCalculator() {
super("Calculator");
JPanel panel1 = new JPanel(new GridLayout(4, 4));
for (i = 0; i < str.length; i++) {
buttons[i] = new JButton(str[i]);
panel1.add(buttons[i]);
}
JPanel panel2 = new JPanel(new BorderLayout());
panel2.add("Center", display);
panel2.add("East", reset);
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", panel2);
getContentPane().add("Center", panel1);
for (i = 0; i < str.length; i++)
buttons[i].addActionListener(this);
reset.addActionListener(this);
display.addActionListener(this);
addWindowListener(new WindowCloser());
setSize(800, 800);
setVisible(true);
pack();
}

public void actionPerformed(ActionEvent e) {
Object target = e.getSource();
String label = e.getActionCommand();
if (target == reset)
handleReset();
else if ("0123456789.".indexOf(label) > 0)
handleNumber(label);
else
handleOperator(label);
}
boolean isFirstDigit = true;
public void handleNumber(String key) {
if (isFirstDigit)
display.setText(key);
else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
isFirstDigit = false;
}
public void handleReset() {
display.setText("0");
isFirstDigit = true;
operator = "=";
}
double number = 0.0;
String operator = "=";
public void handleOperator(String key) {
if (operator.equals("+"))
number += Double.valueOf(display.getText());
else if (operator.equals("-"))
number -= Double.valueOf(display.getText());
else if (operator.equals("*"))
number *= Double.valueOf(display.getText());
else if (operator.equals("/"))
number /= Double.valueOf(display.getText());
else if (operator.equals("="))
number = Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator = key;
isFirstDigit = true;
}

public static void main(String[] args) {
new JCalculator();
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式