2017-10-14 1 views
0

私はスキャナをjavaで使用しましたが、1グレードブックと2グレード除外グレードの間で選択すると2つの入力が必要です)は、グレードを入力する前に数値を追加します

import java.util.Scanner; 

public class BarrogoMidtermExam { 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String Myname; 
     Scanner mname=new Scanner(System.in); 
     System.out.println("Enter name: "); 
     Myname=mname.nextLine(); 

     System.out.print("Gradebook Type(1- Gradebook, 2-Exclude Failing grades): "); 
     Scanner gradebook = new Scanner(System.in); 
     int i=gradebook.nextInt(); 

     if (i==1) 
     { 

      Scanner grade=new Scanner(System.in); 
      int average=0; 
      int total=0; 
      int g = grade.nextInt(); 
      String outputString = ""; 
      while (g !=0) 
      { 
       outputString += g + " "; 
       total +=g; 
       average /= total; 

       System.out.println("enter grade (enter 0 to stop entering grade): "); 
      g = grade.nextInt(); 

      } 
      System.out.println(Myname); 
      System.out.println("Entered Number:\t" + outputString); 
      System.out.println("The Sum:\t\t" + total); 
     } 




    } 
} 
+1

何が問題なのですか? – MCMastery

+1

入力が必要なたびに、新しい「スキャナ」を作成しないでください。 **スキャナ**を作成し、毎回**入力が必要です。 –

答えて

0

の問題は、あなたが実際にあなたのプログラムが二回だったどのような値グレードは、その後に入力され、ループに入る前に、「尋ねる」理由で値を入力するようユーザーに求めているint g = grade.nextInt()を初期化しているときgに割り当てられていると、平均値の一部になります。次のようにコードを変更することができます

// Scanner grade=new Scanner(System.in);// no need to create another scanner 
int total=0; 
int g = 0; 
String outputString = ""; 
while(true) { // Create an infinite loop 
    System.out.println("enter grade (enter 0 to stop entering grade): "); 
    g = mname.nextInt(); 
    if(g == 0) { // Break from the infinite loop if the user entered 0 
     break; 
    } 
    outputString += g + " "; 
    total +=g; 
} 
0

私はあなたが求めているものを正確にはわかりませんが、あなたのif文の内側に、あなたはこの次のコードを持っている:

Scanner grade=new Scanner(System.in); 
int g = grade.nextInt(); 

あなたの変数ことを意味しますgはユーザからの入力を要求しており、whileループのもう1つはの中にあり、gの値を入力するよう求めるif文もあります。

あなたのプログラムに複数のScannerは必要ありません。 1つで十分です。 whileループを使用してから他にも、このようなあなたのコードのためのforループを使用することができます:

int average=0; 
int total=0; 
int g; 
String outputString = ""; 

// I'm asking the user how many grades do they want to enter 
System.out.print("Enter the number of Grades you want in your Gradebook:"); 
int n = mname.nextInt(); 

for(int j = 0; j < n; j++){ 
    System.out.println("Enter grade: "); 
    g = mname.nextInt(); 
    outputString += g + " "; 
    total +=g; 
    average = total/n; 
    } 
System.out.println(Myname); 
System.out.println("Entered Number:\t" + outputString); 
System.out.println("The Sum:\t\t" + total); 

はまた、もともと、あなたが持っていた:

average /= total; 

これはいつもあなたに0を与えます変数の合計を平均を得るために入力した等級nの数に分割する必要があります。

whileループでこのコードを使用したい場合は、上記のリファレンスが良いですが、平均を得るために入力されたグレードの数を記録するカウンタが必要です。

関連する問題