对于学校项目,我正在编写一个程序,我需要从JTextField中检索用户输入。我已经尝试使用getText()方法,但它返回一个空字符串错误。
String s = input.getText();
if(changeNum.equals("")){
firstNum = s;
}
if(!changeNum.equals("")){
secondNum = s;
}
firstNum和secondNum都是字符串。返回的错误是:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
这条线正在返回:
Double firstN = Double.parseDouble(firstNum);
我该怎么办?谢谢!
编辑:忘记添加该输入是我的JTextField的名称,以防令人困惑。
答案 0 :(得分:0)
将所有变量更改为double(firstNum等)并将代码更改为:
注意:如果您不使用否定数字
double s = null;
try{
s = Double.parseDouble(input.getText());
}catch(NumberF... e){e.getMesssge();}
if(s > 0){
if(changeNum >= 0){
firstNum = s;
}
else {
secondNum = s;
}
}
//if you have to convert it to String use :
String str =String.valueOf(your double variable);
答案 1 :(得分:0)
我喜欢这样做(一般意义上讲)。让我们说我有一个带有三个文本框的面板,我想获得每个文本框的值(每个代表一个不同的类型)。这就是我要做的事情:
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.BoxLayout;
public class Panel extends JPanel
{
JTextField textBox;
JTextField intBox;
JTextField floatBox;
JTextField dblBox;
public Panel()
{
textBox = new JTextField("Hello");
intBox = new JTextField("10");
floatBox = new JTextField("3");
dblBox = new JTextField("3.14");
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
this.add(textBox);
this.add(intBox);
this.add(floatBox);
this.add(dblBox);
}
public String getText()
{
return textBox.getText();
}
public int getInt()
{
try
{
return Integer.parseInt( intBox.getText() );
}
catch(NumberFormatException execp) { }
return -1;
}
public float getFloat()
{
try
{
return Float.parseFloat( floatBox.getText() );
}
catch(NumberFormatException execp) { }
return -2.0f;
}
public double getDouble()
{
try
{
return Double.parseDouble( dblBox.getText() );
}
catch(NumberFormatException execp) { }
return -2.0;
}
}
另一个选择是让Panel
实现ActionListener和dblBox.addActionListener(this)
。然后,只要您更改数字,解析数据,并在JTextField
(如果投射会抛出异常)时写入错误消息,或者私有成员,您可以让JLabel
从父级调用方法它成功了。然后使用getter来读取私有成员。