我的计划适用于生日和年龄。我试图将我的JTextField字符串转换为双打时遇到问题。我使用了解析方法但仍然收到错误。请帮助!
public class MyPaymentFrame extends JFrame implements ActionListener {
JTextField txtAge;
JTextField txtDate;
public MyPaymentFrame() {
Container mycnt = getContentPane();
mycnt.setLayout(new FlowLayout());
Color c = new Color(56, 100, 20);
Font F = new Font("Arial", Font.ITALIC, 20);
mycnt.add(new JLabel("Enter your Age"));
txtAge = new JTextField(15);
mycnt.add(txtAmount);
mycnt.add(new JLabel("Enter birthdate"));
txtDate = new JTextField(10);
mycnt.add(txtDate);
}
if (e.getActionCommand().equals("Clear")) {
txtAge.setText("");
txtDate.setText("");
}
if (e.getActionCommand().equals("Calculate")) {
// Converting String to Double
double Amount = Double.parseDouble(txtMonth);
}
}
public static void main(String[] args) {
Theframe myframe = new Theframe();
}
}
答案 0 :(得分:0)
你可以尝试:
Double Amount = Double.valueOf(txtMonth);
根据文件:
此方法返回一个Double
对象,其中包含由参数String
表示的double值。
答案 1 :(得分:0)
显然txtMonth是一个JTexfield,但Double.parseDouble方法接收一个String。检查方法的javadoc here。
尝试使用:
double Amount = Double.parseDouble(txtMonth.getText());
此外,如果文本无法转换为double,则此方法将抛出NumberFormatException。
答案 2 :(得分:0)
double Amount = Double.parseDouble(txtMonth.getText());
或
Double Amount = Double.valueOf(txtMonth.getText());
parseDouble()
返回原始double
值。 valueOf()
返回包装类Double
的实例。
在Java 5引入自动装箱之前,这两者之间存在非常显着的差异。
答案 3 :(得分:0)
您需要通过调用方法txtMonth
来获取对象getText
的文本并且请验证输入或使用Try catch fall输入无效...
public static void main(String[] args) {
double amount=0.0;
try {
amount = Double.parseDouble(txtMonth.getText());
} catch (Exception e) {
System.err.println("ups, this was not castable to double");
amount=-10.0;
}
System.out.println("Here is the double: "+ amount);
}