求Java大虾看下程序,在线等,

importjava.awt.*;importjava.awt.event.*;classjsextendsFrameimplementsActionListener{B... import java.awt.*;
import java.awt.event.*;

class js extends Frame implements ActionListener
{
Button b1,b2;
TextField t;
js()
{
super("1111");
setVisible(true);
setSize(200,300);
b1=new Button("+");
b2=new Button("=");
t=new TextField(40);
add(t);
add(b1);
add(b2);
setLayout(new FlowLayout());
pack();
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
double x=0,y=0,z;
if(e.getSource()==b1)
{
x=Double.parseDouble(t.getText());//帮忙看下这里赋值的x,为什么下面z=x+y;中的X还是初始化的值;是不是不能这样使用呢???

t.setText("");
}
if(e.getSource()==b2)
{
y=Double.parseDouble(t.getText());
z=x+y;
t.setText(z+"");
}

}
public static void main(String[] args)
{
new js();
}
}
不行啊,,有解决的办法吗?
展开
 我来答
山中小馆
2011-11-12 · 干一行,爱一行,专注零售近十载
山中小馆
采纳数:1082 获赞数:6811

向TA提问 私信TA
展开全部
x=Double.parseDouble(t.getText());//帮忙看下这里赋值的x,为什么下面z=x+y;中的X还是初始化的值;是不是不能这样使用呢???

这里和下面z=x+y是两个if里面的,不可能同时成立的,下面的条件成立是执行z=x+y,这时候肯定x还是初始化的值,因为就没执行上面这个if,也就没给x赋值.知道了吧...

要想实现功能,只要把double x = 0, y = 0, z;这行代码移到actionPerformed方法外面(成员变量)就可以了
追问
这样还是不能实现啊,按道理先执行了  b1   应该对X赋值了啊
追答
我测试的可以实现  
代码:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class js extends Frame implements ActionListener {
Button b1, b2;
TextField t;

js() {
super("1111");
setVisible(true);
setSize(200, 300);
b1 = new Button("+");
b2 = new Button("=");
t = new TextField(40);
add(t);
add(b1);
add(b2);
setLayout(new FlowLayout());
pack();
b1.addActionListener(this);
b2.addActionListener(this);
}

double x = 0, y = 0, z;
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1) {
x = Double.parseDouble(t.getText());// 帮忙看下这里赋值的x,为什么下面z=x+y;中的X还是初始化的值;是不是不能这样使用呢???

t.setText("");
}
if (e.getSource() == b2) {
y = Double.parseDouble(t.getText());
z = x + y;
t.setText(z + "");
}

}

public static void main(String[] args) {
new js();
}
}
三只熊47
2011-11-12 · TA获得超过125个赞
知道答主
回答量:82
采纳率:0%
帮助的人:43.9万
展开全部
这里不能在事件处理方法中这样定义x和y,z.只能将其定义为静态变量,因为按你那样定义每次调用事件处理方法都要对x和y重新赋值,所以x永远是0,,所以将三个变量都设置为静态的
import java.awt.*;
import java.awt.event.*;

public class js extends Frame implements ActionListener //这里少了public
{
static double x=0,y=0,z; //定义三个静态变量
Button b1,b2;
TextField t;
js()
{
super("1111");
setVisible(true);
setSize(200,300);
b1=new Button("+");
b2=new Button("=");
t=new TextField(40);
add(t);
add(b1);
add(b2);
setLayout(new FlowLayout());
pack();
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
x=Double.parseDouble(t.getText());
t.setText("");
}
if(e.getSource()==b2)
{
y=Double.parseDouble(t.getText());
z=x+y;
t.setText(z+"");
}

}
public static void main(String[] args)
{
new js();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
private_jacky
2011-11-12 · TA获得超过132个赞
知道答主
回答量:110
采纳率:0%
帮助的人:117万
展开全部
程序进入的分支不对,当你点击"="按钮时,if(e.getSource()==b1){。。。}这个分支是不会进入的,而是直接进入到if(e.getSource()==b2){。。。}分支,因此x还是0
追问
有解决的办法吗?
追答
你把x变成实例变量,比如这样:

package Javajichu;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class js extends Frame implements ActionListener {
Button b1, b2;
TextField t;
double x = 0, y = 0;

js() {
super("1111");
setVisible(true);
setSize(200, 300);
b1 = new Button("+");
b2 = new Button("=");
t = new TextField(40);
add(t);
add(b1);
add(b2);
setLayout(new FlowLayout());
pack();
b1.addActionListener(this);
b2.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
double z;
if (e.getSource() == b1) {
x = Double.parseDouble(t.getText());// 帮忙看下这里赋值的x,为什么下面z=x+y;中的X还是初始化的值;是不是不能这样使用呢???
t.setText("");
}
if (e.getSource() == b2) {
y = Double.parseDouble(t.getText());
z = x + y;
t.setText(z + "");
}
}

public static void main(String[] args) {
new js();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lexin_lyl
2011-11-12 · TA获得超过714个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:465万
展开全部
可以那样使用的,你可以在那一行语句之后添加个输出,看看x的值是否正常转换了,而且也要检查一下是不是有楼上所说的“没有执行那个分支”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小白AI绘画
2011-11-12 · TA获得超过1358个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:466万
展开全部
把x,y做为类的成员变量声明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式