【问题标题】:Have to input twice after validation (Java)验证后必须输入两次(Java)
【发布时间】:2018-04-07 23:23:17
【问题描述】:

当提示输入名称时,我正在尝试验证用户输入,以便只接受字母,但是,当我这样做时,我必须输入两次名称,直到它打印下一行。

这是我的代码:

System.out.println("Enter First Name");
        queueArray[last].setfName(in.next().toUpperCase());  

        while(!in.next().matches("[a-zA-Z,]+")){
            System.out.println("Invalid Input");
            System.out.printLn("Enter First Name");
            queueArray[last].setfName(in.next().toUpperCase()); 
        }

我不确定是代码的哪一部分导致了这个问题。

【问题讨论】:

  • 先将in.next() 放入变量中,然后再检查它是否匹配任何内容。更重要的是,学会在头脑中(或在纸上)浏览您的代码,并在运行时可视化它正在做什么。这是一项必要的技能,如果你要进步,你需要提高。
  • 您在while 行中调用next() 一次,在setfName 行中再次调用。每次调用 next 都会获得新的输入。
  • 我推荐你阅读"How to debug small programs"
  • @HovercraftFullOfEels 感谢您的建议,我会记住这一点。

标签: java loops validation


【解决方案1】:

可能的解决方案:

System.out.println("Enter First Name");
String input = in.next();
queueArray[last].setfName(input.toUpperCase());  

while(!input.matches("[a-zA-Z,]+")){
    System.out.println("Invalid Input");
    System.out.printLn("Enter First Name");
    queueArray[last].setfName(in.next().toUpperCase()); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 2015-05-23
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多