[英]How can I convert input from JTextField into double. Input value is from user
我正在尝试使用JTextField的输入并将其转换为双行,因为我要在程序中的数学公式中使用该输入..但是当我尝试运行代码时,它给出了一个错误..我认为我解析的方法有误。任何帮助吗? 谢谢!
xLabel = new JLabel("Subject");
xTF = new JTextField(4);
xTF.addKeyListener(new KeyHandler());
xString = xTF.getText();
xDouble = Double.parseDouble(xString);
KeyListener
,使用DocumentFilter
,更多信息请看实现文档过滤器和DocumentFilter示例 InputVerifier
。 有关更多详细信息,请参见验证输入 。 JFormmattedField
或JSpinner
。 有关更多详细信息,请参见如何使用格式化的文本字段和如何使用微调框 。 很难说,但是请记住,您是在事件驱动的环境中进行操作的,除非用户执行了某些操作,否则您不应该尝试获取字段的值
通过在字符串上使用trim()删除任何可用的空格
xDouble = Double.parseDouble(xString.trim());
我假设xString是有效字符串,而xDouble是Double类型
您应该使用parseDouble(String s)
和相关的异常是NumberFormatException
java.lang.Double.parseDouble()方法返回一个新的double,该double初始化为指定的String表示的值,如Double类的valueOf方法所做的那样。
例如:
public class Main {
public static void main(String[] args) {
String str = "50.00001";
double retval =Double.parseDouble(str);
System.out.println("Value = " + retval);
}
}
看起来不错,在测试之前是否在文本字段中输入了正确的值? 例如,如果您将其保留为空或输入“ 1,3”,则可能不会接受。
编辑:我刚刚做了一个测试,正如我所说,它只接受这样的值:“ 1.3”
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MyApp extends JFrame implements ActionListener {
JTextField textField;
JLabel label;
JButton okButton;
public MyApp() {
textField = new JTextField(4);
label = new JLabel("N/A");
okButton = new JButton("Ok");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
add(textField, BorderLayout.NORTH);
add(label, BorderLayout.CENTER);
add(okButton, BorderLayout.SOUTH);
okButton.addActionListener(this);
pack();
}
public static void main(String[] args) {
MyApp app = new MyApp();
app.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == okButton) {
double d = 0;
d = Double.parseDouble(textField.getText());
label.setText(String.valueOf(d));
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.