Java Pin重新验证
我仍处于学习Java的初级阶段,目前在尝试重新输入第一次输入的PIN码以确保第二次输入正确时遇到了问题。这就像我打开你的移动设备时为它设置密码一样。 这里是问题发生的地方:Java Pin重新验证,java,swing,jlabel,Java,Swing,Jlabel,我仍处于学习Java的初级阶段,目前在尝试重新输入第一次输入的PIN码以确保第二次输入正确时遇到了问题。这就像我打开你的移动设备时为它设置密码一样。 这里是问题发生的地方: int firstSet, secondSet; firstSet = Integer.parseInt(jTextField2.getText()); jTextField2.setText(""); jLabel1.setText("Re-Enter PIN"); secondSet = Integer.parseInt
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-EventQueue-0”java.lang.NumberFormatException中的异常:用于输入字符串:“”
我希望有人能帮助我。:) 你这里有问题
jTextField2.setText("");
// ...
secondSet = Integer.parseInt(jTextField2.getText());
您正在将
jTextField2.text
的值设置为”
,尝试时:secondSet=Integer.parseInt(jTextField2.getText())
您从.getText()
中得到一个空的字符串
,所以方法正在抱怨
正如报告中指出的那样
抛出:
NumberFormatException
-如果字符串不包含可解析整数
所有这些代码都是在没有中断的情况下执行的,所以如果您想以这种方式只使用一个方法调用来执行这些代码的话
首先删除这一行:
jTextField2.setText("");
并使用2个文本字段
firstSet = Integer.parseInt(jTextField2.getText());
secondSet = Integer.parseInt(jTextField3.getText());
// ^ here!!!!
附加组件 为了避免ueser输入无效数据或根本没有dagta时出现类似问题,我建议您安全地解析
try {
firstSet = Integer.parseInt(jTextField2.getText());
secondSet = Integer.parseInt(jTextField3.getText());
} catch (NumberFormatException e) {
jLabel1.setText("PIN NOT VALID; TRY AGAIN!!!");
}
备选方案如果要使用相同的jTextField并要求用户重复两次PIN码
,则必须调整方法以执行两项操作:
- 要求用户输入pin+接受
- 方法调用:转换pin并将其保存在类属性中
- 删除JTextField
- 再次询问用户pin+接受
- 方法调用:如果类内属性中存储了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
}
}
}
}
您正在尝试将“”解析为整数。不要这样做。这实际上是我应该如何运行程序:1)我首先输入我的pin码集,然后屏幕清除。2) 然后提示我重新输入,3)如果输入正确,则提示“正确”,如果输入错误,则提示“错误”。这仅在一个文本字段中发生。:)感谢您的所有回复。:)我认为这是最好的解决办法,最接近我的困境。然而,由于我还是新手,我无法完全理解这一部分:或者,如果您想使用相同的jTextField并要求用户重复两次PIN代码,您必须调整您的方法以执行两个操作:要求用户输入PIN+接受方法调用:转换PIN并将其保存在类属性中。擦除JTextField再次询问用户pin+接受方法调用:如果在类属性中存储了pin,请与用户输入进行比较。-你能告诉我更多吗?:)顺便说一句,我正在通过netbeans将jframe用于这个程序。其中,我只有1个文本字段、3个按钮编号和1个按钮确认,您需要在重新输入pin码后再次按下。:)哇,成功了!非常感谢你,乔迪!你真是个天才!:)这是一件我自己还无法理解的事情。但我知道总有一天我会的。再次感谢我以前在计算器上使用过全局变量,但这次我忘了使用它。我将和你们一起记下我的第一课;)。另一个问题是,每当我输入数字时,它并不遵循数字应该如何对齐。虽然它是右对齐的,但它彼此跟随的方式是它与前面的数字重叠。当我输入2&1时,它应该显示21,而不是12。我试着检查属性来修复这个问题,但是我很难。哦,是的。当然谢谢你提醒我这件事。哈哈哈。。。我现在就做标记。再次感谢你,希望你也能帮助我解决这个项目的最后一个难题。嘿嘿。。。