0

私はかなり新しい#で、実際には単純なコンソールアプリケーションを作成しています。私は、アプリケーションが質問をして、ユーザーの入力が 'y'または 'n'に等しいときに次のコードに進むようにします。ここに私がこれまで持っているものがあります。Console.ReadLine = 'y'または 'n'までのC#ループ

 static void Main(string[] args) 
    { 

     string userInput; 
     do 
     { 
      Console.WriteLine("Type something: "); 
      userInput = Console.ReadLine(); 
     } while (string.IsNullOrEmpty(userInput)); 

     Console.WriteLine("You typed " + userInput); 
     Console.ReadLine(); 

     string wantCount; 
     do 
     { 
      Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): "); 
      wantCount = Console.ReadLine(); 
      string wantCountLower = wantCount.ToLower(); 
     } while ((wantCountLower != 'y') || (wantCountLower != 'n')); 


    } 

私はstring wantCount;から問題があります。私がしたいことは、文字列中の文字をカウントするかどうかをユーザに尋ね、 'y'または 'n'(引用符なし)が入力されるまでその質問をループします。

大文字/小文字も入力したいので、wantCount文字列を下に変換したい画像がありますループので、私はループの外側でwhile句の中で参照することはできません。

私はこの論理を達成する方法について理解できますか?

+1

'wantCountLower'はdo-whileのスコープ内で定義されているため、外部では使用できません。ループの前に定義する必要があります(または、大文字と小文字を区別しない比較を使用してください)。 – Luaan

+0

私はあなたが正しくwhile構文がどのように動作するかを読む必要があると思う。 – Takarii

+1

''y''は、文字列をチェックする' 'y" 'が必要な文字の表記です。 – prof1990

答えて

2

を押すまであなたがループ内に入力チェックを移動し、終了しbreakを利用することができるループするように、またはそれがwhile(wantCount!= 'n')になります。使用したロジックは常にtrueと評価されますので、条件を逆転させてcharの比較をstringに変更しました。

string wantCount; 
do 
{ 
    Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): "); 
    wantCount = Console.ReadLine(); 
    var wantCountLower = wantCount?.ToLower(); 
    if ((wantCountLower == "y") || (wantCountLower == "n")) 
     break; 
} while (true); 

ToLower()前ヌル条件演算子(?.)を注意します。これにより、何も入力しないとNullReferenceExceptionがスローされないことが保証されます。

+0

いくつかの良い回答がありましたが、私はこれが私が探していたものだと思っています。これは私が達成しようとしていたものに基づいて最適です。ご協力いただきありがとうございます。 – Klicker

0

あなたは文字を比較したい場合は、あなたの状態がこれです場合は、そのためのReadKeyを使用することができますReadLineのために必要な自分ではありません:while ((wantCountLower != 'y') || (wantCountLower != 'n'));あなたがここに||のための代わりに&&を使用することができますので、あなたのループが、無限のいずれかになりますが、それはあなたがn

char charYesOrNo; 
do 
{ 
    charYesOrNo = Console.ReadKey().KeyChar; 
    // do your stuff here 
}while(char.ToLower(charYesOrNo) != 'n'); 
関連する問題