Java JTextField输入到Double
我正在开发一个应用程序,它可以获得用户输入文本字段的快门速度。用户可以以分数“1/250”或整数的形式输入快门速度。从这个输入,我想把它转换成一个double类型的变量 但当我尝试输入“1/250”时,我会出现许多错误,第一个错误是:Java JTextField输入到Double,java,swing,jtextfield,Java,Swing,Jtextfield,我正在开发一个应用程序,它可以获得用户输入文本字段的快门速度。用户可以以分数“1/250”或整数的形式输入快门速度。从这个输入,我想把它转换成一个double类型的变量 但当我尝试输入“1/250”时,我会出现许多错误,第一个错误是: Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1/250" 我知道这与输入中的“/”有关,但我如何将分数转换为双精度
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException:
For input string: "1/250"
我知道这与输入中的“/”有关,但我如何将分数转换为双精度呢
JTextField userShutter = new JTextField("", 10);
userShutter.setBounds(60, 180, 50, 25);
userShutter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double shutter = Double.parseDouble(userShutter.getText());
baseShutterSpeed = shutter;
}
});
// Calculate shutter speed
calculator(stopValue, baseShutterSpeed);
您只需使用从textfield返回的字符串,并根据/字符将其拆分为两部分。然后,你可以使用这两个数字,然后像使用基础数学一样将它们除以,得到双精度
String str = userShutter.getText();
String[] arr = str.split("/");
double answer = Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]);
System.out.println(answer);
“1/250”
不是一个double
。。。你为什么会认为是这样?您需要获取文本,在/
分隔符上拆分,然后可以开始将文本转换为数字,并执行所需的数学运算以将其转换为适当的双精度value@MadProgrammer“您需要…”。是否使用ScriptEngine
计算表达式?好吧,也许是我的懒惰让我这么说。@AndrewThompson我成长在一个没有“华丽的pancy”脚本引擎的时代;)<代码>用户快门.setBounds(60,180,50,25)代码>Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。