-1

我创建了一个 do-loop 来继续迭代,直到用户输入以 Y 或 N 开头的单词,最初使用对char的原始检查,现在使用下面概述的方法来检查字符串是否相等。使用这两种比较媒体,我发现即使输入了“y”或“n”,循环也不会退出。我无法解释原因,希望您能:

以下是代码:

            do{
            System.out.println("Please Enter a Valid y/n Reply:");
            eraseOr_no = histScanner.next();
            if(histScanner.hasNext()){
                (eraseOr_no.replaceAll("\\s+", "")).toLowerCase();
                character = Character.toString(eraseOr_no.charAt(0));

                //DEBUGGING
                System.out.println("CHECKPOINT 5" + "----" + character);
                //DEBUGGING

            }
        }while(!(character.equals("n")) || !(character.equals("y")));

很明显,我使用了一个简单的系统来通知我String character的值,并且您可能会看到它成功显示了“y”或“n”,这意味着我的第一个字母检索代码是功能,尽管整个 do 结构不是。

Continue
Answer:

CHECKPOINT 4.0.
PLACEHOLDER

Please Enter a Valid y/n Reply:
y
y
CHECKPOINT 5----y
Please Enter a Valid y/n Reply:
y
CHECKPOINT 5----y
Please Enter a Valid y/n Reply:
n
CHECKPOINT 5----y
Please Enter a Valid y/n Reply:
y
CHECKPOINT 5----n
Please Enter a Valid y/n Reply:

我应该尝试删除所有空格吗?我错过了更基本的东西吗?

4

2 回答 2

2

你在说:

而(字符不是 n(字符不是 y

至少其中一个条件将永远为真!如果是,n则不是y,如果是,y则不是n(如果两者都不是,则两个条件都满足)。

你可能想要:

while (!(character.equals("n") || character.equals("y")))
于 2013-09-09T21:45:51.057 回答
1

你的条件不对。它是:

while(!(character.equals("n")) && !(character.equals("y"))); // A

或者,

while(!(character.equals("n") || character.equals("y"))); // B

换句话说,这是:

(不"n")和(不"y")         //A

或者:

既不"n"也不"y"        //B

于 2013-09-09T21:44:55.167 回答