1

出于某种原因,我从输入小写“y”得到的结果与输入大写“Y”不同。“y”的输入执行 if 语句中的代码,但“Y”的输入不执行。此外,输入“Y”不会执行中断;之后。为什么会这样,我做错了什么?

Scanner playAgain = new Scanner (System.in);


System.out.println ("Play Again (Y/N)");

if ((playAgain.next().equals("y"))||(playAgain.next().equals("Y")))
{
Game theGame1 = new Game(0);
currentPts = currentPts + theGame1.play(total);

System.out.println("Current total is:" + "   "  +  currentPts);
}
else break;
4

2 回答 2

8

在这种情况下:

if ((playAgain.next().equals("y"))||(playAgain.next().equals("Y")))

您调用playAgain.next() 了两次- 所以它从用户那里获取两个不同的字符串。

我确定您只打算获取一个字符串:

String answer = playAgain.next();
if (answer.equals("y") || answer.equals("Y"))

或者,只需使用equalsIgnoreCase,这意味着您可以只阅读一次:

if (playAgain.next().equalsIgnoreCase("y"))
于 2013-02-16T19:57:43.427 回答
7

您在 if 语句中阅读了两次。因此,playAgain.next()如果"Y"您输入"Y".

您可以将读取的输入存储在一个变量中,并使用它来代替:

String input = playAgain.next();   
if ((input.equals("y"))||(input.equals("Y")))

除此之外,您还可以使用更好的equalsIgnoreCase方法:

if (playAgain.next().equalsIgnoreCase("y"))
于 2013-02-16T19:57:33.030 回答