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() 2回呼び出しているので、ユーザーから2つの異なる文字列をフェッチしています。

1つの文字列のみをフェッチすることを意図していると確信しています。

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ステートメントを2回読んでいます。したがって、を入力すると、 2番目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 に答える