怎么用eclipse去编写一个计算器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用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<button.length;i++)//在面板上添加按钮
panel.add(button[i]);
for(int i=0;i<button.length;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();
参考技术A
用eclipse编写计算器的步骤如下:
1、新建Java项目。打开eclipse,【新建】|【Java项目】命令,弹出【创建Java项目】对话框,在【项目名】里输入要创建的项目名eclipsehello1。
2、新建一个命名为Calculator .Java类。打开eclipse,【新建】|【类】命令,弹出【新建Java类】对话框。
3、在代码编辑区输入以下内容并保存:import java.awt.*;import java.applet.*;public class Calculator extends Applet TextField tfAnswer; //显示输入和结果的文本域 Button bPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision; //运算符按钮 Button[] b=new Button[10]; //数字按钮。
4、String currentOp,preOp; //当前操作和上一步操作 String foreText,backText; //当前输入和上一次输入 boolean isFloat = false; //运算类型标志。
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
参考技术B 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<button.length;i++)//在面板上添加按钮
panel.add(button[i]);
for(int i=0;i<button.length;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();
本回答被提问者采纳 参考技术C m_first=m_firzorf*(m_firstz m_firstx); //计算出第一个数 m_x=m_复杂加分加money :-) 建议你去CSDN,在那里你能找到很多你需要的
用eclipse编写Java源程序时,出现一个黄色的灯泡和感叹号是怎么回事啊?请前辈们指导下,谢谢了!
这是警告的意思。一般只要你用集合没有用泛型就会出来。或者有些过时的方法也会这样的情况发生。 参考技术A 有警告,不去理他也是能运行的,但是如果做大项目这些也是要处理的!以上是关于怎么用eclipse去编写一个计算器?的主要内容,如果未能解决你的问题,请参考以下文章