我仍然处于学习Java的初级阶段,目前我在尝试重新输入我第一次输入的PIN代码以确保第二次输入正确时遇到了问题。这就像当我打开移动设备时为它设置密码一样。问题出在这里:
int firstSet, secondSet;
firstSet = Integer.parseInt(jTextField2.getText());
jTextField2.setText("");
jLabel1.setText("Re-Enter PIN");
secondSet = Integer.parseInt(jTextField2.getText());
if(firstSet==secondSet)
{
jLabel1.setText("PIN VERIFIED");
}
else
{
jLabel1.setText("PIN INCORRECT");
}这是我正在犯的错误:
线程“AWT 0”java.lang.NumberFormatException中的异常:用于输入字符串:"“
我希望有人能帮我。:)
发布于 2015-09-10 14:03:25
你在这里有问题
jTextField2.setText("");
// ...
secondSet = Integer.parseInt(jTextField2.getText());您正在将jTextField2.text的值设置为"",当您尝试:secondSet = Integer.parseInt(jTextField2.getText());时,您将从.getText()获得一个空的String,因此方法Integer.parseInt()正在向NumberFormatException抱怨
正如Integer:parseInt(String) API中所指出的
抛出:
NumberFormatException-如果字符串不包含可解析整数。
所有这些代码都是不间断地执行的,因此,如果您想这样做,只需使用一个方法调用。
首先删除这一行:
jTextField2.setText("");并使用两个文本字段。
firstSet = Integer.parseInt(jTextField2.getText());
secondSet = Integer.parseInt(jTextField3.getText());
// ^ here!!!!加载项
为了避免在用户输入非有效数据时出现类似的问题,或者根本不输入dagta,我建议您安全地解析
try {
firstSet = Integer.parseInt(jTextField2.getText());
secondSet = Integer.parseInt(jTextField3.getText());
} catch (NumberFormatException e) {
jLabel1.setText("PIN NOT VALID; TRY AGAIN!!!");
}ALTERNATIVE如果您想使用相同的jTextField并要求用户重复2次PIN CODE,则必须调整您的方法才能执行2项操作:
示例
class YourClass {
int firstSet = 0; // global attribute!
public void yourListenerMethod() {
// if firstSet == 0 is first attempt
if (firstSet == 0) {
firstSet = Integer.parseInt(jTextField2.getText());
jTextField2.setText("");
jLabel1.setText("Re-Enter PIN");
//
// if firstSet != 0 is second attempt so compare
} else {
int secondSet = Integer.parseInt(jTextField2.getText());
if(firstSet==secondSet)
{
jLabel1.setText("PIN VERIFIED");
// reset the pin if necessary
firstSet = 0;
}
else
{
jLabel1.setText("PIN INCORRECT");
// reset the pin if necessary
}
}
}
}https://stackoverflow.com/questions/32503881
复制相似问题