做while循环错误消息

时间:2016-09-16 05:18:48

标签: java

我是初学者程序员(这里的第一篇文章!)我无法弄清楚如何使用“do while”循环创建错误消息。如果给定的输入不在字母表中,则应该显示错误消息,直到给出仅包含字母的输入,然后移动到程序的其余部分。即使给出正确的输入,我的代码似乎永远循环。任何建议都非常感谢! :)

do {
    input = JOptionPane.showInputDialog("What is your name?");  
    if (input.contains("[a-zA-Z]"))  
        name = input;
    else
         System.out.println("Please enter a valid name containing: ‘a-z’ or ‘A-Z’ lower or upper case");
} while (!input.contains("[a-zA-Z]")); 

5 个答案:

答案 0 :(得分:1)

您可以向用户显示错误弹出窗口,以便他知道他/她的输入有问题。

在您正在打印消息的else语句中执行

Bar

For more information

答案 1 :(得分:0)

String.contains()方法匹配一组字符序列。 您指定的是正则表达式,因此,您应该使用String.matches()Pattern类来执行检查。

使用Pattern类应该是这样的。

Pattern p = Pattern.compile("[a-zA-Z]+");
Matcher m = p.matcher(input);
if(m.matches){
 //Do something
}

有关详细信息,请参阅此{{3}}

答案 2 :(得分:0)

input.contains("[a-zA-Z]")检查输入是否包含文本[a-zA-Z]。

您可以使用matches方法。

input.matches("[a-zA-z]+")

此外,您应该使用[a-zA-z] +作为模式,因为您尝试匹配一个或多个字母。

答案 3 :(得分:0)

问题与您检查给定输入的方式有关。

 String input;
        String name = "";
        do {
            input = JOptionPane.showInputDialog("What is your name?");
            if (input.matches("[a-zA-Z]+")) {
                name = input;
            } else {
                System.out.println("Please enter a valid name containing: ‘a-z’ or ‘A-Z’ lower or upper case");
            }
        } while (!input.matches("[a-zA-Z]+"));

使用字符串的匹配功能可以帮助您实现您想要的功能

答案 4 :(得分:0)

您使用错误的方法验证正则表达式.contains()需要char序列。那不是你想要的。 您应该使用.matches()方法。

String input = "";
do{
input = JOptionPane.showInputDialog("What is your name?");  
    if (input.matches("[a-zA-Z]+"))  // Replacing the contains()
        name = input;
      else
         System.out.println
    ("Please enter a valid name containing: ‘a-z’ or ‘A-Z’ lower or upper case");
}while (!input.matches("[a-zA-Z]+")); //Once again replacing contains()