首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >销重校核

销重校核
EN

Stack Overflow用户
提问于 2015-09-10 13:56:13
回答 1查看 99关注 0票数 1

我仍然处于学习Java的初级阶段,目前我在尝试重新输入我第一次输入的PIN代码以确保第二次输入正确时遇到了问题。这就像当我打开移动设备时为它设置密码一样。问题出在这里:

代码语言:javascript
复制
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中的异常:用于输入字符串:"“

我希望有人能帮我。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-10 14:03:25

你在这里有问题

代码语言:javascript
复制
jTextField2.setText("");
// ... 
secondSet = Integer.parseInt(jTextField2.getText());

您正在将jTextField2.text的值设置为"",当您尝试:secondSet = Integer.parseInt(jTextField2.getText());时,您将从.getText()获得一个空的String,因此方法Integer.parseInt()正在向NumberFormatException抱怨

正如Integer:parseInt(String) API中所指出的

抛出:NumberFormatException -如果字符串不包含可解析整数。

所有这些代码都是不间断地执行的,因此,如果您想这样做,只需使用一个方法调用。

首先删除这一行:

代码语言:javascript
复制
jTextField2.setText("");

并使用两个文本字段。

代码语言:javascript
复制
firstSet =  Integer.parseInt(jTextField2.getText());
secondSet = Integer.parseInt(jTextField3.getText());
//                                     ^ here!!!!

加载项

为了避免在用户输入非有效数据时出现类似的问题,或者根本不输入dagta,我建议您安全地解析

代码语言:javascript
复制
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项操作:

  • 向用户询问引脚+接受
  • 方法调用:转换引脚并将其保存在类属性中。
  • 擦除JTextField
  • 再次向用户询问引脚+接受
  • 方法调用:如果在class属性中存储了一个引脚,则与用户输入进行比较。

示例

代码语言:javascript
复制
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
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32503881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档