2017-12-06 10 views
-2

私のifステートメントでユーザーにスコアを依頼したい場合を除き、コードがほぼ完成していて、うまく機能しています。今のように、ユーザーにスコアを要求し、無効なエントリを入力すると、もう一度やり直してくださいという行が表示されますが、コードは停止します。無効な番号を入力するまで、ユーザーにプロンプ​​トを表示しておきたい。値が(あなたのif条件ごとに)それが数値でない入力された場合ユーザにスコアを促すメッセージが表示されない

//Variables 
      double grade; 
      string studentName; 
      //Prompt the user for the student's name 
      Console.WriteLine("Please enter the student's name:"); 
      studentName = Console.ReadLine(); 
      //Prompt the user for the student's score 
      Console.WriteLine("Please enter the student's score between 0 and 100:"); 
      if (!(double.TryParse(Console.ReadLine(), out grade))) 
      { 
       Console.WriteLine("Invalid entry, scores entered must be numeric. Please try again"); 
      } 
      else if (grade >=90) 
      { 
       Console.WriteLine("{0} has a score of {1} which is an A.", studentName, grade); 
      } 
      else if (grade < 90 && grade >= 80) 
      { 
       Console.WriteLine("{0} has a score of {1} which is a B.", studentName, grade); 
      } 
      else if (grade < 80 && grade >=70) 
      { 
       Console.WriteLine("{0} has a score of {1} which is a C.", studentName, grade); 
      } 
      else if (grade < 70 && grade >= 60) 
      { 
       Console.WriteLine("{0} has a score of {1} which is a D.", studentName, grade); 
      } 
      else 
      { 
       Console.WriteLine("{0} has a score of {1} which is an F.", studentName, grade); 
      } 
      Console.ReadLine(); 
+2

あなたが持っていないループを使用してください。 –

+0

あなたは 'do/while'を使うことができます – Nkosi

+1

*有効な数字を入力するまでは意味があると思います - その時点で結果を出力してから停止するか、プロンプトを表示し続けるのですか?また、私がこの演習をマークした場合、あなたが持っている不必要に繰り返されるコードの量をあまりにも親切に見ていません。 –

答えて

2

あなたは無限while LOOP-

while (true) 
{ 
    Console.WriteLine("Please enter the student's name:"); 
    studentName = Console.ReadLine(); 
    //Prompt the user for the student's score 
    Console.WriteLine("Please enter the student's score between 0 and 100:"); 
    if (!(double.TryParse(Console.ReadLine(), out grade))) 
    { 
     Console.WriteLine("Invalid entry, scores entered must be numeric. Please try again"); 
     break; 
    } 
    else if (grade >= 90) 
    { 
     Console.WriteLine("{0} has a score of {1} which is an A.", studentName, grade); 
    } 
    else if (grade < 90 && grade >= 80) 
    { 
     Console.WriteLine("{0} has a score of {1} which is a B.", studentName, grade); 
    } 
    else if (grade < 80 && grade >= 70) 
    { 
     Console.WriteLine("{0} has a score of {1} which is a C.", studentName, grade); 
    } 
    else if (grade < 70 && grade >= 60) 
    { 
     Console.WriteLine("{0} has a score of {1} which is a D.", studentName, grade); 
    } 
    else 
    { 
     Console.WriteLine("{0} has a score of {1} which is an F.", studentName, grade); 
    } 
} 

私はwhile-loopを破るbreak文を含めることができます。

関連する問題