2014-02-10 144 views
-1

製作節目,詢問你有多少等級平均值(不顯示等級的平均值),然後輸入你的成績,這將增加和取它們的平均值。我沒有得到任何錯誤,但班級的平均分將無法正確顯示。平均成績顯示

import java.util.Scanner; 

public class ExerciseFour 
{ 
    public static void main(String[] args) 
    { 

     Scanner dylan = new Scanner(System.in); 

     int total; 
     int gradeCounter; 
     int grade;  
     int average;  
     int numberofGrades; 

     System.out.println("How many grades do you want to average?"); 
     numberofGrades = dylan.nextInt(); 



     total = 0; 
     gradeCounter = 1; 

     while (gradeCounter <= numberofGrades) 
     { 
      System.out.println("Enter grade"); 
      grade = dylan.nextInt(); 
      total = total + grade; 
      gradeCounter = gradeCounter +1; 
     } 


     average = total/numberofGrades; 
     System.out.printf("The average is ", average); 


    } 

} 

首先,它要求有多少進入,我按下4.我輸入4,4,4,4,它想出了 「一般是」 我希望它顯示的平均等級,幫助? :d

+0

除非你標記化而您的字符串,' printf'不帶任意數量的參數。改爲使用字符串連接。 '字符串平均=「平均:」+總數/ numberofGrades;' – Bucket

回答

4

變化:

System.out.printf("The average is ", average); 

System.out.printf("The average is %lf", average); 

或者

System.out.println("The average is " + average); 

另外請注意,你在做int計算。 average應該double,你應該投一面:

average = (double)total/numberofGrades; 
+0

謝謝:)另外,你知道我會如何讓它顯示小數?我認爲這是與浮點值,但我不確定 – user3303473

+0

@ user3293354見我的編輯。 – Maroun

0

printf是偉大的格式,所以如果你想格式化你的電話號碼到小數點後兩位,您可以使用此方法:

System.out.printf("The average is %.2f", average); 

%.2f說,「格式化此浮到小數點後兩位。」 (Further documentation

但是,如果您希望此功能與您的代碼一起使用,則必須將您的average聲明更改爲float

float average; 

還要注意,你將得到你的平均整數是ints,所以你需要這樣計算轉換爲float

average = (float) total/numberofGrades; 
+0

好吧,我把它生產具有兩位小數的數字。但是,我平均2個數字,5和2,結果是3.它看起來像四捨五入,因爲5 + 2/2 = 3.5 編輯:修改它通過改變總值爲浮動值:) – user3303473

+0

請參閱我的編輯。您需要到該行轉換爲浮動,因爲你將一個'int'由'int'。這會產生一個'int',它在被賦值爲'average'之後只會轉換爲'float',導致您看到的整數截斷。你需要在分配之前將它轉換爲浮動*。從技術上講,這種方法只是將'total'轉換爲一個浮點數,這已經足夠了,因爲即使在用int分割後它仍然是一個'float'。 – Bucket