程序能运行但是在使用是会出错,请各位大侠帮忙!!

mashengxuucom 2009-12-04 01:39:00
import java.awt.*;
import java.awt.event.*;
public class a extends Frame implements ActionListener{
private MenuItem fileNew = new MenuItem("New");
private MenuItem fileOpen = new MenuItem("Open");
private MenuItem fileExit = new MenuItem("Exit");
private MenuItem editCut = new MenuItem("Cut");
private MenuItem editCopy = new MenuItem("Copy");
private MenuItem editPaste = new MenuItem("Paste");
private TextField text1 = new TextField(10);
private Button Add = new Button("+");
private TextField text2 = new TextField(10);
private Button Equal1 = new Button("=");
private TextField text3 = new TextField(10);
private TextField text4 = new TextField(10);
private Button Mul = new Button("*");
private TextField text5 = new TextField(10);
private Button Equal2 = new Button("=");
private TextField text6 =new TextField(10);
public a(){
super("计算器");
Menu file = new Menu("File");
Menu edit = new Menu("Edit");
file.add(fileNew); file.add(fileOpen); file.add(fileExit);
edit.add(editCut); edit.add(editCopy); edit.add(editPaste);
MenuBar bar = new MenuBar();
bar.add(file);
bar.add(edit);
setMenuBar(bar);
setLayout(new FlowLayout());
add(text1);add(Add);add(text2);add(Equal1);add(text3);
add(text4);add(Mul);add(text5);add(Equal2);add(text6);
Equal1.addActionListener(this);
Equal2.addActionListener(this);
setResizable(false);
pack();
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public static void main(String[] args){
a jfq = new a();
}
public void actionPerformed(ActionEvent e){
int first1,second1,sum1;
double first2,second2,sum2;
first1 = Integer.parseInt(text1.getText());
second1 = Integer.parseInt(text2.getText());
sum1 = first1+second1;
text3.setText(String.valueOf(sum1));
first2 = Double.parseDouble(text4.getText());
second2 = Double.parseDouble(text5.getText());
sum2 = first2*second2;
text6.setText(String.valueOf(sum2));
}
}
这个程序能运行但为什么在使用是会出错:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty St
ring
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:99
4)
at java.lang.Double.parseDouble(Double.java:510)
at a.actionPerformed(a.java:55)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

E:\>
这是怎么回事呀!
如何把加法和乘法放在不同行呀!
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dajiadebeibei9 2009-12-04
  • 打赏
  • 举报
回复
因为你的public void actionPerformed(ActionEvent e)捕获的是所有按钮的时间
当你写好1+2 按下等于的时候 程序会判断你的乘法模块没有输入值 是空的 所以出错了
angelia圆梦 2009-12-04
  • 打赏
  • 举报
回复
取经!!
laolik 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mashengxuucom 的回复:]
对于你们的回答我很满意但是不知道为什么需要加上两条If语句呀!还有怎样才能将它分两行排列呀!??
[/Quote]

要分两行,用布局管理器呀。
mashengxuucom 2009-12-04
  • 打赏
  • 举报
回复
对于你们的回答我很满意但是不知道为什么需要加上两条If语句呀!还有怎样才能将它分两行排列呀!??
zealVampire 2009-12-04
  • 打赏
  • 举报
回复
而且当你输入的是非数字的时候会抛异常, 建议你捕获一下
first1 = Integer.parseInt(text1.getText());
second1 = Integer.parseInt(text2.getText());
zealVampire 2009-12-04
  • 打赏
  • 举报
回复
AWT都是原生的窗口,难能可贵啊
我建议你为每个按钮添加各自的监听器, 这样就不用判断消息是来自哪个控件的了
bayougeng 2009-12-04
  • 打赏
  • 举报
回复
40分?
laolik 2009-12-04
  • 打赏
  • 举报
回复
import java.awt.*;
import java.awt.event.*;
public class a extends Frame implements ActionListener{
private MenuItem fileNew = new MenuItem("New");
private MenuItem fileOpen = new MenuItem("Open");
private MenuItem fileExit = new MenuItem("Exit");
private MenuItem editCut = new MenuItem("Cut");
private MenuItem editCopy = new MenuItem("Copy");
private MenuItem editPaste = new MenuItem("Paste");
private TextField text1 = new TextField(10);
private Button Add = new Button("+");
private TextField text2 = new TextField(10);
private Button Equal1 = new Button("=");
private TextField text3 = new TextField(10);
private TextField text4 = new TextField(10);
private Button Mul = new Button("*");
private TextField text5 = new TextField(10);
private Button Equal2 = new Button("=");
private TextField text6 =new TextField(10);
public a(){
super("计算器");
Menu file = new Menu("File");
Menu edit = new Menu("Edit");
file.add(fileNew); file.add(fileOpen); file.add(fileExit);
edit.add(editCut); edit.add(editCopy); edit.add(editPaste);
MenuBar bar = new MenuBar();
bar.add(file);
bar.add(edit);
setMenuBar(bar);
setLayout(new FlowLayout());
add(text1);add(Add);add(text2);add(Equal1);add(text3);
add(text4);add(Mul);add(text5);add(Equal2);add(text6);
Equal1.addActionListener(this);
Equal2.addActionListener(this);
setResizable(false);
pack();
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public static void main(String[] args){
a jfq = new a();
}
public void actionPerformed(ActionEvent e){
int first1,second1,sum1;
double first2,second2,sum2;
if(e.getSource()==Equal1){
first1 = Integer.parseInt(text1.getText());
second1 = Integer.parseInt(text2.getText());
sum1 = first1+second1;
text3.setText(String.valueOf(sum1)); }
else if(e.getSource()==Equal2){
first2 = Double.parseDouble(text4.getText());
second2 = Double.parseDouble(text5.getText());
sum2 = first2*second2;
text6.setText(String.valueOf(sum2)); }
}
}


还在研究这个呀,呵呵。
结帖吧。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧