2017-04-21 14 views
0

私は非常にJavaの新しいです、whixhは、loq品質のコードを説明します。私は自分のコードに入力したスコアの平均を以下のように計算しようとしていますが、コードの残りの部分が実行された後に入力する数字の平均値しか得られません。このコード行を使用して、前にコードの中に入れたスコアの平均を見つけるにはどうすればよいでしょうか。
System.out.printf( "%。2f"、average); 私はアスタリスクを置いた行の後に入力する数字の平均を求めたいと思います。 おかげスコアの平均を見つける

import java.util.Scanner; 
public class week4 
{ 
    public static void main(String[] args) { 

int n =1; 

{ 
    do{ 
    n++; 
    String studentname; 

    int mark; 

    Scanner inText = new Scanner(System.in); 

    System.out.print("Please enter the name of the student >> "); 

    studentname = inText.nextLine(); 

    Scanner inNumber = new Scanner(System.in); 

    *System.out.print("Please enter mark for student " + studentname + " out of 100 >> ");* 


    mark = inText.nextInt(); 

    if(mark <50) System.out.println("The grade for " + studentname + " is F "); 

    else if(mark <65) System.out.println("The grade for " + studentname + " is P "); 

    else if(mark <75) System.out.println("The grade for " + studentname + " is C "); 

    else if(mark <85) System.out.println("The grade for " + studentname + " is D "); 

    else System.out.println("The grade for " + studentname + " is HD"); 

    } while(n <=3); 

    Scanner input = new Scanner(System.in); 

       int sum = 0; 
       int mark; 
       int average; 
       int counter = 1; 

       while (counter < 2){ 
        mark = input.nextInt(); 
        sum = sum + mark; 
        counter++; 
        average = sum/3; 
        System.out.printf("The aerage score is " + average ); 
       } 


     } 
    } 
} 
+0

平均的なフロートではありませんか? –

+0

進む前に、マークを 'mark'変数に格納し、最初の' do-while'ループでマークを読み取って平均を数えますか? – gonczor

+0

これは、システム入力上の 'Scanner'の多くです。同じ除算器を使って各ループの平均を行いますが、条件が一致しない場合は、ループを停止する前に値を1つだけ読み取るでしょう。 – AxelH

答えて

0

終わりにあなたのこの間のコードブロックは不要です。

    while (counter < 2){ 
        mark = input.nextInt(); 
        sum = sum + mark; 
        counter++; 
        average = sum/3; 
        System.out.printf("The average score is " + average ); 

あなたは合計のようなグローバル変数を追加する必要があります。ユーザーがマークを入力するときは、各ユーザースコアを合計変数に格納します。コードをこれに置き換えてください(太字の変更を強調表示):

public class week4 { 

    public static void main(String[] args) { 
     int total = 0; 

     int n = 1; 

     { 
      do { 
       n++; 
       String studentname; 

       int mark; 

       Scanner inText = new Scanner(System.in); 

       System.out.print("Please enter the name of the student >> "); 

       studentname = inText.nextLine(); 

       Scanner inNumber = new Scanner(System.in); 

       //* 
       System.out.print("Please enter mark for student " + studentname + " out of 100 >> "); 

       mark = inText.nextInt(); 
       **total += mark;** 

       if (mark < 50) { 
        System.out.println("The grade for " + studentname + " is F "); 
       } else if (mark < 65) { 
        System.out.println("The grade for " + studentname + " is P "); 
       } else if (mark < 75) { 
        System.out.println("The grade for " + studentname + " is C "); 
       } else if (mark < 85) { 
        System.out.println("The grade for " + studentname + " is D "); 
       } else { 
        System.out.println("The grade for " + studentname + " is HD"); 
       } 

      } while (n <= 3); 

      Scanner input = new Scanner(System.in); 

      int sum = 0; 
      int mark; 
      int average; 
      int counter = 1; 

      **average = total/3; 
      System.out.printf("The aerage score is " + average);** 

     } 
    } 
関連する問題