java 请高手帮我看下什么问题 两个数相加只显示第2个数的值没有把第一个数相加

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:39:14
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CFrame extends JFrame
{

JPanel jp=new JPanel();
JTextField t=new JTextField("",20);
JButton button1=new JButton("1");
JButton button2=new JButton("2");
JButton button3=new JButton("+");
JButton button4=new JButton("=");
public CFrame()
{
this.getContentPane().add(jp);
jp.add(t);
button1.addActionListener(new ActionLi());
button2.addActionListener(new ActionLi());
button3.addActionListener(new ActionLi());
button4.addActionListener(new ActionLi());
jp.add(button1);
jp.add(button2);
jp.add(button3);
jp.add(button4);
this.setSize(500,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args)
{
new CFrame();

兄弟,说句实话
花了10分钟看了你的代码都不明白你的这个小计算器要做什么
按钮1,2要做什么?
else
t.setText(t.getText()+tt.getLabel());
}
???
先不管+=按钮要做什么
jisuan()这个函数就有问题
由于每次点击任何按钮都会初始化变量a为0,所以你输入的第一个数字无法保存即得不到2数相加结果。
最后评论下,作为一个初学者,请不要偷懒,把所有的按键执行程序分开写,或者能够明显区分;一个函数尽量做一件事。比如
Double jisuan(Double a, Double b)
{
return a+b;
}。
尽量使用传参而不是使用全局变量。
SWING组件写的还可以,执行的核心代码思路比较混乱。

//储存的变量不能放在内部类里,因为每一次事件发生都会新产生一个内部类对象,肯定无法储存变量了。
//我修改的,还不完善,但是可以运算了,剩下的就是你的事情了

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CFrame extends JFrame
{

JPanel jp=new JPanel();
JTextField t=new JTextField("0.0",20);
JButton button1=new JButton("1");
JButton button2=new JButton("2");
JButton button3=new JButton("+");
JButton button4=new JButton("=");

private double a=0;//储存原来的数字
private double b=