首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java While-Loop程序

Java While-Loop程序
EN

Stack Overflow用户
提问于 2012-10-09 05:47:04
回答 5查看 421关注 0票数 1

我正在尝试获取"y“、"Y”、"N“或"n”的有效输入。

如果输入无效(例如,任何以"y“或”n“开头的单词),我希望它重新提示用户输入。

到目前为止,我有:

代码语言:javascript
复制
while  (again.charAt(0) != 'N' && again.charAt(0) != 'n' && again.charAt(0) !='Y' && again.charAt(0) != 'y' ) {
    System.out.println ("Invalid Inpur! Enter Y/N");
    again = numscan.next();
}

if (again.charAt(0)== 'N' || again.charAt(0) == 'n') {
    active = false;                   
} else {
    if (again.charAt(0)== 'Y' || again.charAt(0) == 'y'){
        active = true;
        random = (int) (Math.random () *(11));
    }
}

我遇到的问题是,如果我输入任何以字母"y“或"n”开头的单词,它会将其视为有效输入(因为它是插槽0上的字符)。我需要帮助解决这个问题,这样当用户输入以"y“或"n”开头的单词时,我可以重新提示用户。

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-09 05:49:52

假设again是一个包含完整用户输入的字符串,您可以使用:

代码语言:javascript
复制
while (!again.equals("N") && !again.equals("n") ...

只有当整个字符串都匹配时,.equals()方法才会匹配。

票数 3
EN

Stack Overflow用户

发布于 2012-10-09 05:48:51

您可以只测试以确保输入的长度为1:

代码语言:javascript
复制
again.length() == 1

更好的方法可能是:

代码语言:javascript
复制
while (! (again.equalsIgnoreCase("n") || again.equalsIgnoreCase("y"))) {
    ...
}

甚至是

代码语言:javascript
复制
while (! again.matches("[nyNY]")) {
    ...
}
票数 3
EN

Stack Overflow用户

发布于 2012-10-09 05:48:47

其中一种方法是:

First check again String length只有一个字符。如果没有,请再问一遍。

代码语言:javascript
复制
if(again.length() ==1)
{
 while  (again.charAt(0) != 'N' && again.charAt(0) != 'n' && again.charAt(0) !='Y' && again.charAt(0) != 'y' ) {
               System.out.println ("Invalid Inpur! Enter Y/N");
                again = numscan.next();
            }
.....

}else
     {
System.out.println ("Invalid Inpur! Enter Y/N");
                    again = numscan.next();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12789960

复制
相关文章

相似问题

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