0

ユーザー入力が Y または N であることを確認し、そうでない場合は再度入力するように要求する単純な do-while ステートメントを作成したいと考えています。Y または N の場合、アプリは続行されます。これは私がこれまでに持っているものですが、私のアプリケーションはユーザー入力を求めるループに陥っています。C# の初心者 -- 助けてくれてありがとう。

    string answer = "";
    do
    {
        //Ask the user if they want to roll the dice
        Console.WriteLine("Would you like to roll the dice (y or n)?");
        //Get the user's response and validate that it is either 'y' or 'n'.
        answer = Console.ReadLine();
    } while (answer != "Y" || answer != "N");
4

4 に答える 4

2

単純なブール論理エラーのように見えます。

while ステートメントは次のようになります。 while (answer != "Y" && answer != "N");

答えがまだ Y ではなく、答えもまだ N でないことを確認したいので、どちらでもない間ループします。お役に立てれば!

于 2013-10-24T01:53:44.407 に答える
1

あなたのロジックは||AND ではなくOR&&です。一度に両方になることはできないため、常にそうでないか、そうでないかのいずれかになりますYNあるときNはそうではなくY、その逆も真です。

&&代わりにANDを使用してください。

また、比較では大文字と小文字が区別されます。大文字と小文字のチェックを検討してください。

于 2013-10-24T01:53:25.477 に答える
1

|| を変更します。&& に変更すると、これで修正されるはずです。

それを見る別の方法は次のとおりです。

ブレーク条件は、答えが「Y」または答えが「N」のときです。

ブレーク条件が満たされないときはいつでもループを継続したいので、

(answer == "Y" || answer == "N") そして結果ではない

while(!(answer == "Y" || answer == "N")
于 2013-10-24T01:53:58.177 に答える
1

2つのこと

  1. すべてが言ったよう||&&
  2. Yユーザーが入力したものの大文字と一致させ、Nユーザーが入力できるようにしyます。AYy、どちらもユーザーの肯定的な決定です。

answer.ToUpper() != "Y" && answer.ToUpper() != "N"

于 2013-10-24T02:01:35.013 に答える