由于某种原因,我得到的结果是小写“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;
答案 0 :(得分: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"))
答案 1 :(得分:7)
你在if语句中读了两遍。因此,如果您输入playAgain.next()
,则您的第二个"Y"
无法阅读"Y"
。
您可以将读取输入存储在变量中,然后使用它:
String input = playAgain.next();
if ((input.equals("y"))||(input.equals("Y")))
除此之外,您还可以使用更好的equalsIgnoreCase
方法:
if (playAgain.next().equalsIgnoreCase("y"))