永发信息网

跪求高手教我怎么用eclipse编写计算器

答案:1  悬赏:40  手机版
解决时间 2021-03-26 02:04
跪求高手教我怎么用eclipse编写计算器
最佳答案
eclipse中一般是使用java swing做界面,计算器的函数功能使用一些工具函数,示例如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener{
private static final long serialVersionUID = 8199443193151152362L;
private JButton bto_s=new JButton("sqrt"),bto_zf=new JButton("+/-"),bto_ce=new JButton("CE"),bto_c=new JButton("C"),bto_7=new JButton("7"),
bto_8=new JButton("8"),bto_9=new JButton("9"),bto_chu=new JButton("/"),bto_4=new JButton("4"),bto_5=new JButton("5"),
bto_6=new JButton("6"),bto_cheng=new JButton("*"),bto_1=new JButton("1"),bto_2=new JButton("2"),bto_3=new JButton("3"),
bto_jian=new JButton("-"),bto_0=new JButton("0"),bto_dian=new JButton("."),bto_deng=new JButton("="),bto_jia=new JButton("+");
JButton button[]={bto_s,bto_zf,bto_ce,bto_c,bto_7,bto_8,bto_9,bto_chu,bto_4,bto_5,bto_6,bto_cheng,bto_1,bto_2,bto_3,bto_jian,
    bto_0,bto_dian,bto_deng,bto_jia};
private JTextField text_double;// = new JTextField("0");
private String operator = "="; //当前运算的运算符
private boolean firstDigit = true; // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
private double resultNum = 0.0; // 计算的中间结果
private boolean operateValidFlag = true; //判断操作是否合法
public Calculator()
{
   super("Calculator");
   this.setBounds(300, 300, 300, 300);
   this.setResizable(false);
   this.setBackground(Color.orange);
   this.setDefaultCloseOperation(EXIT_ON_CLOSE);
   this.getContentPane().setLayout(new BorderLayout());//设置布局
   text_double=new JTextField("0",20);//设置文本区
   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    panel.add(button[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("C")){
    handleC();           //用户按了“C”键
   }
   else if (c.equals("CE"))       // 用户按了"CE"键
   {
    text_double.setText("0");
   }
   else if ("0123456789.".indexOf(c) >= 0) // 用户按了数字键或者小数点键
   {
    handleNumber(c); // handlezero(zero);
   } else            //用户按了运算符键
   {
               handleOperator(c);
   }
}
private void handleC()       // 初始化计算器的各种值
{
   text_double.setText("0");
   firstDigit = true;
   operator = "=";
   }
private void handleNumber(String button) {
   if (firstDigit)//输入的第一个数字
   {
   text_double.setText(button);
   } else if ((button.equals(".")) && (text_double.getText().indexOf(".") < 0))//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
    //如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -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("*")){
//   乘法运算
   resultNum *= getNumberFromText();
   } else if (operator.equals("sqrt")) {
//   平方根运算
    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()返回表示指定的 double 值的 Double 实例
   } catch (NumberFormatException e){
   }
   return result;
   }
public static void main(final String[] args) {
new Calculator();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
多少港币,1港币又等于多少人民币
whatszhangpenglike是什么意思
请问在日本东京涉谷区的语言学校有哪些呢?
A wise man used to go to the ocean to do h
伊苏6剧情好不好
螺纹Rp4;Rc1LH;G2A-LH;Rc2 1/2LH的含
为什么看到皮肤很白的女孩子就很激动很冲动,
lv有这款包吗 这款不是邮差包
ipod怎么连接三星热点
溶于水后溶液呈碱性的物质是A.NO2B.HClC.SO2D
求解到这些选择题!!谢谢
醉酒驾驶,没有人伤,没有谅解书能怎么判刑
星期八是什么意思?
挞虏是什么意思
茅台镇的文中酒厂这么样
推荐资讯
电脑主板温度达到119度是什么原因
如何在EXCEL中画脚印
用联想和想象写一首诗描写星星的
一道计算题不会求助高手,急急急。 A公司于20
make up for ever化妆刷多久清洗
COCO的洗发水好用吗?
电动三轮车72v1500w的电机能不能用60v1000w的
那段难忘的青春之旅作文
墙角树枝梅,凌寒独自开,这首诗叫什么名字
我是男人,眼睛大睫毛长并且是双眼皮还是外双
PDF转换成word后全是图片的,能转换成可编辑
龙口农商银行(胶东商城支行)地址在哪,我要去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?