ここで簡単なアプリを構築します。問題のメソッド:
静的コイン クラス
public static void SetUpCoins() {
coin1 = new Coin();
coin2 = new Coin();
}
public static void PlayConsole() {
SetUpCoins();
OutputWinner();
}
public static void OutputWinner() {
if (coin1.ToString() == "Heads" && coin2.ToString() == "Heads") {
Console.WriteLine("You threw Heads - you win");
++point_player;
} else if (coin1.ToString() == "Tails" && coin2.ToString() == "Tails") {
Console.WriteLine("You threw Tails - I win");
++point_comp;
} else {
Console.WriteLine("You threw Odds");
WaitForKey_ConsoleOnly("Press any key to throw again");
PlayConsole();
}
Console.WriteLine("You have {0} points and the computer has {1} points", point_player, point_comp);
if (WantToPlayAgain_ConsoleOnly()) { // ask user if they want to play again; return bool
PlayConsole();
}
}
private static bool WantToPlayAgain_ConsoleOnly() {
string input;
bool validInput = false;
do {
Console.Write("Play Again? (Y or N): ");
input = Console.ReadLine().ToUpper();
validInput = input == "Y" || input == "N";
} while (!validInput);
return input == ("Y");
}
false
プログラムから戻る場合はWantToPlayAgain_ConsoleOnly()
終了しません。私の問題を説明する出力の例を次に示します。
が false の場合、プログラムがメソッドにWantToPlayAgain_ConsoleOnly
制御を渡さずに終了するのはなぜですか。playConsole
この繰り返しの代わりに。
の実行が終了OutputWinner
すると、 にジャンプしPlayConsole
、次に の else ステートメントに戻りますOutputWinner
- 理由は不明です。