引脚重新验证
Pin Re-Verification
我仍处于学习的初级阶段Java,我目前在尝试重新输入我第一次输入的 PIN 码以确保我输入正确的 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");
}
这是我遇到的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
我希望有人能帮助我。 :)
你这里有问题
jTextField2.setText("");
// ...
secondSet = Integer.parseInt(jTextField2.getText());
您正在将 jTextField2.text
的值设置为 ""
,当您尝试时:secondSet = Integer.parseInt(jTextField2.getText());
您从 .getText()
得到一个空的 String
,所以方法 Integer.parseInt()
is complaining with NumberFormatException
正如 Integer:parseInt(String) API
中指出的那样
Throws:
NumberFormatException
- if the string does not contain a parsable integer.
所有这些代码都是不间断地执行的,所以如果你想以这种方式只调用一个方法来做到这一点。
先删除这一行:
jTextField2.setText("");
并使用 2 个文本字段。
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 个操作:
- 询问用户密码 + 接受
- 方法调用:转换 pin 并将其保存在 class 属性中。
- 擦除 JTextField
- 再次询问用户密码 + 接受
- 方法调用:如果在 class 属性中存储了 pin,请与用户输入进行比较。
例子
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
}
}
}
}
我仍处于学习的初级阶段Java,我目前在尝试重新输入我第一次输入的 PIN 码以确保我输入正确的 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");
}
这是我遇到的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
我希望有人能帮助我。 :)
你这里有问题
jTextField2.setText("");
// ...
secondSet = Integer.parseInt(jTextField2.getText());
您正在将 jTextField2.text
的值设置为 ""
,当您尝试时:secondSet = Integer.parseInt(jTextField2.getText());
您从 .getText()
得到一个空的 String
,所以方法 Integer.parseInt()
is complaining with NumberFormatException
正如 Integer:parseInt(String) API
Throws:
NumberFormatException
- if the string does not contain a parsable integer.
所有这些代码都是不间断地执行的,所以如果你想以这种方式只调用一个方法来做到这一点。
先删除这一行:
jTextField2.setText("");
并使用 2 个文本字段。
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 个操作:
- 询问用户密码 + 接受
- 方法调用:转换 pin 并将其保存在 class 属性中。
- 擦除 JTextField
- 再次询问用户密码 + 接受
- 方法调用:如果在 class 属性中存储了 pin,请与用户输入进行比较。
例子
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
}
}
}
}