大家帮忙看看,问题出哪里,~~谢谢了

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:54:30
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MyCalculator extends JFrame
{
double startNumber=0.0;
JTextField jf=new JTextField(16);
JButton rest=new JButton("CE");
String buttons[]=
{
"7","8","9","/",
"4","5","6","*",
"1","2","3","+",
".","0","=","-"
};
JButton keys[]=new JButton[buttons.length];
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
public void addButtons()
{
jp2.setLayout(new GridLayout(4,4));
this.getContentPane().add(jp2);
for(int i=0;i<buttons.length;i++)
{

keys[i]=new JButton(buttons[i]);
jp2.add(keys[i]);
}
}
public MyCalculator()
{
super("我的计算器");

很简单,因为你的getNumber值全都是来自计算器上的显示器,所以每次得到一个数后必须清除掉刚才输入的数即jf.setText("");才能保证下一个数的正常输入,不然就接在前一次的数字,和前一次的数字一起作为第二次的输入了
所以你用了jf.setText(String.valueOf(startNumber));
jf.setText("");

但是这样每次都清空显示器里内容的话,结果怎么显示呢

你可以试着注释掉jf.setText("");看一下,先输入1,然后输入+,结果显示器上会是1.0,再输入1就变成了1.01,你再输入=,这时结果为2.01,说明你计算是对的,让两次得到的数1和1.01相加了,并且显示了出来

知道原因了,然后你再想改进的办法吧 ^_^

你把 问题 贴出来啊
是 运行不了啊 还是 什么 想要实现什么功能
报什么错也 贴出来啊这样 别人才能帮你啊
我现在没java环境啊