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:\>
这是怎么回事呀!
如何把加法和乘法放在不同行呀!
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:\>
这是怎么回事呀!
如何把加法和乘法放在不同行呀!
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)); }
}
}
还在研究这个呀,呵呵。
结帖吧。
我建议你为每个按钮添加各自的监听器, 这样就不用判断消息是来自哪个控件的了
first1 = Integer.parseInt(text1.getText());
second1 = Integer.parseInt(text2.getText());
当你写好1+2 按下等于的时候 程序会判断你的乘法模块没有输入值 是空的 所以出错了