我正在尝试为小型游戏制作应用程序,而我目前遇到了让代码运行的问题。它应该显示一个带有文本字段,jbutton和不可编辑的文本字段的窗口。我需要阅读我在第一个文本字段中输入的内容。然而,当我运行它时,我收到的是:
Exception in thread "main" java.lang.NumberFormatException: For input
string: "Enter Command"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at TextAdv.<init>(TextAdv.java:16)
at TextAdv.main(TextAdv.java:43)
我在阅读错误方面并不是很出色,而且我一直在努力解决这个问题一个小时左右。如果有人可以帮我解决这个问题,我将不胜感激。谢谢。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextAdv {
JFrame jtfMainFrame;
JButton jbnButton2;
JTextField jtfInput, jtfCommand;
JPanel jplPanel, jplPanel2;
public TextAdv() {
jtfMainFrame = new JFrame("TextAdv");
jbnButton2 = new JButton("Quit (LEAVES GAME)");
jtfInput = new JTextField(55);
jtfCommand = new JTextField("Enter Command", 40);
double command = Double.parseDouble(jtfCommand.getText());
jplPanel = new JPanel();
jplPanel2 = new JPanel();
jbnButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
jtfInput.setEditable(false);
jplPanel.setLayout(new FlowLayout());
jplPanel.add(jtfCommand);
jplPanel.add(jbnButton2);
jplPanel2.add(jtfInput);
jtfMainFrame.getContentPane().add(jplPanel2, BorderLayout.SOUTH);
jtfMainFrame.getContentPane().add(jplPanel, BorderLayout.CENTER);
jtfMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtfMainFrame.pack();
jtfMainFrame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager
.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) {
}
TextAdv application = new TextAdv();
}
}
答案 0 :(得分:1)
您正在尝试解析jtfCommand
"Enter Command"
字段的值:
double command = Double.parseDouble(jtfCommand.getText());
如果NumberFormatException
返回不是数字的字符串,则此行抛出jtfCommand.getText()
。
您应该知道以下代码行创建JTextField
实例,并将文本值初始化为第一个参数(Source Code ):
jtfCommand = new JTextField("Enter Command", 40);
当您致电jtfCommand.getText()
时,它会返回显然不是数字的"Enter Command"
。