2016-10-08 13 views
0

Visual Studioを使用してC#でコマンドラインゲームとなるゲームを作成しています。私がしたいことは質問をして、応答を「Y」または「N」にすることです。 私はそれを持っていて、応答がそれらのどちらでもなければ、正しい応答を与えるために質問を繰り返すだけです。私は前にこれを行う必要がなかったので、これを行う良い方法を見つけることができません。誰もこれで私を助けることができますか?有効な応答でない場合、ユーザーに応答を再入力するように依頼するC#

ありがとうございます!

public string GetResponse(string question) 
{ 
    string response = ""; 

    while(response != "Y" && response != "N") 
    { 
     Console.WriteLine(question); 
     response = Console.ReadLine(); 
    } 

    return response; 
} 

だから、限り:あなたはその後、あなたは簡単なwhileループでこれを行うことができ、あなたのループを切断し、実行

string response = String.Empty; 
while(response != "Desired Response"){ 
     //get your response 
} 
+1

e'ループ?または 'do ... while'ループですか? –

答えて

0

有効な回答が得られるまで返信をお願いします。このような方法は、あなたのケースのために働くことができます。

あなたのMainメソッドから
static void GetResponse() 
{ 
    Console.WriteLine("Do you wish to continue? [Y/N]"); 

    var keyInfo = Console.ReadKey(); //Read a single key from the user. The ReadKey method displays the pressed key on the console. 

    //Check the pressed key and if it's not y or n, re-ask for it. 
    while (keyInfo.KeyChar.ToString().ToLower() != "y" && keyInfo.KeyChar.ToString().ToLower() != "n") 
    { 
     Console.WriteLine(); 
     Console.WriteLine("Invalid choice. Valid choices are: Y or N"); 
     keyInfo = Console.ReadKey(); //Retake the input. 

    } 
    Console.WriteLine(); //For formatting purposes. 
} 

そして、のGetResponseメソッドを呼び出す:あなたが列挙型とTryParse

enum Answers {Yes = 0, No = 1}; 
    static Answers YesOrNo(string prompt) 
    { 
     Answers answer; 
     do 
     { 
      Console.WriteLine(prompt + " [Yes/No]:"); 
     } while (! Enum.TryParse(Console.ReadLine(), true, out answer)); 
     return answer; 
    } 

を使用することができます

static void Main(string[] args) 
{ 
    GetResponse(); 
    //Valid response received. Do something here... 

} 
0

私は、ループだろう"Y""N"も入力されていないため、ループは実行を継続します。ユーザが"Y"または"N"のいずれかを入力すると、ループが残され、値が返されます。

1

を続ける希望の答えを、得るまで

1

を次のように使用してください:

 Console.WriteLine("Answer is: " + YesOrNo("Do you want it?")); 
関連する問題