2016-10-14 2 views
1

私は、コース、レターグレード、およびコースクレジットの数を取り入れて合計加重を計算できるプログラムをテストするテストクラスを作成しましたポイント、トータルクレジット、および3コースを最大限に設計されたループ内のGPA。無効な応答を修正した後にスキャナが続行できないようにする

しかし、私はコースの数を検証し、無効で有効な入力が両方入力された後に実行されることを証明する必要があります。

無効な応答の後に有効なコース数を入力するように促すようになっていますが、有効な応答が入力されると、プログラムは実行されているのではなく停止します。なぜ誰かが私に言うことができますか?ここで

は私のコードです:

import java.util.*; 
import java.lang.*; 

public class ComputeGpa 
{ 
    public static void main(String [] args) 
    { 
     Gpa grades1 = new Gpa(); 

     Scanner in = new Scanner (System.in); 

     System.out.println("Enter number of courses: "); 
     int courses = in.nextInt(); 
     if(courses > 0) 
     { 
     int i = 0; 
     while(i < 3) 
     { 
      System.out.println("Please enter a letter grade."); 
      String letter = in.next(); 
      char result = letter.charAt(0); 

      System.out.println("How many credits was this class worth?"); 
      int credits = in.nextInt(); 

      grades1.addToTotals(result, credits); 
      i++; 
     } 
     System.out.printf("GPA: %.2f", grades1.calcGpa()); 
     } 
     else 
     { 
     System.out.println("Number of courses must be greater than 0. Please enter a valid number of courses."); 
     courses = in.nextInt(); 
     }   
    } 
} 

次のようにそのための出力は次のとおりです。

Enter number of courses: 
-2 
Number of courses must be greater than 0. Please enter a valid number of courses. 
3 

し、プログラムの実行が停止します。どこが間違っていますか?私は文字列のin.next()がこの問題を修正すると思ったが、明らかに私は間違っていた。何か案は?

+0

ループがある場所です。 –

答えて

0

あなたのフローは現在/ elseです。

int foo = ...; 
if(foo > 0) { 
    //your grade stuff 
} 
else { 
    //ask for reinput 
} 

何が起こって終わることはあなたは一度、問題の入力をキャッチしますが、あなたの流れ、再びそれを確認する機会を与えることはありません。代わりに

、あなたが欲しいの正確な情報を入手するまで、再突入を強制するために、if/elseレイアウト上whileループを使用し、そしてを続けます。

System.out.println("Enter number of courses: "); 
int courses = in.nextInt(); 
while(courses < 0) { 
    System.out.println("Number of courses must be greater than 0. Please enter a valid number of courses."); 
    courses = in.nextInt(); 
} 

int i = 0; 
//... 
+0

ありがとう!私はそれが誤った応答の後に最初にループしないことを気づかなかった。私は2週間だけJavaをコーディングしていますので、これは大きな助けになります! –

関連する問題