2015-11-08 103 views
0

現在我正在製作一個打印出學生姓名,身份證號碼,考試成績,平均分數和成績的計劃。出於某種原因,計算平均分數的方法存在問題。我嘗試添加括號,但也沒有改變結果。這最終會影響評分,因爲評分是用平均分計算的。任何幫助表示讚賞,謝謝!這裏是我的代碼:計算班級中的平均數

import java.util.Scanner; 

    public class Student { 
    private String fname; 
    private String lname; 
    private int id; 
    private int score1; 
    private int score2; 
    private int score3; 
    private double average; 
    private String grade; 

    public void readInfo() 
    { 
     Scanner k = null; 
     k = new Scanner (System.in); 

     System.out.println ("Please enter the first name: (Enter John as first name and Doe as last name to stop) "); 
     fname = k.next(); 
     System.out.println("Please enter the last name: "); 
     lname = k.next(); 
     if (fname.equalsIgnoreCase("John")&&lname.equalsIgnoreCase("Doe")) 
      System.exit(0); 
     System.out.println("Please enter the student ID: "); 
     id = k.nextInt(); 
     System.out.println("Please enter the first score: "); 
     score1 = k.nextInt(); 
     System.out.println("Please enter the second score: "); 
     score2 = k.nextInt(); 
     System.out.println("Please enter the third score: "); 
     score3 = k.nextInt(); 
    } 

//The problem lies in here: 

    private void computeAverage() 
    { 
     average = score1+score2+score3/3.0; 

    } 
    private void computeGrade() 
    { 
     if (average>=90&&average<=100) 
      grade = "A"; 
     else if (average>=80&&average<=89.9) 
      grade = "B"; 
     else if (average>=70&&average<=79.9) 
      grade = "C"; 
     else if (average>=60&&average<=69.9) 
      grade = "D"; 
     else 
      grade = "F"; 
    } 

    private String getName() 
    { 
     return fname + " " + lname; 
    } 
    private double getAverage() 
    { 
     return average; 
    } 
    public void printAll() 
    { 
     System.out.printf("%-9s%-10s %-9s %-3s %-3s %-3s %-5s %-5s", "LastName","FirstName","ID","S1","S2","S3","AVG","GRADE"); 
     System.out.println(); 
     System.out.println("-----------------------------------------------------"); 
     System.out.printf("%-9s%-9s %-9d %-3d %-3d %-3d %-3.2f%-2s",lname,fname,id,score1,score2,score3,average,grade); 
     System.out.println(); 
     System.out.println("-----------------------------------------------------"); 

    } 

    } 
+0

「我試過添加圓括號,並沒有改變結果」< - 在哪裏? – fge

+1

左右(score1 + score2 + score3) – homidhomi4

+0

'(double)(score1 + score2 + score3)/(3.0)' – 3kings

回答

1
  • 我想這個問題是因爲,你不初始化變量平均任何地方。
  • 雖然,您有一個方法computeAverage()。它並沒有從程序中的任何地方被調用。也許你也可以在室外任何地方做。
  • 請包括一定會產生正確結果的括號。
+0

就是這樣!我忘了在「測試人員」的課堂外叫它, – homidhomi4

0

操作順序。你在做什麼是sum 1 + sum 2 sum3和3的商。當你除,你必須除以確切你需要劃分。你應該做的(sum 1+ sum 2+ sum 3)/3

如果你不想被2除,你也可以乘以一半,這不會改變任何東西,但它只是另一種選擇。

(sum 1+ sum 2+ sum 3)*1/2 

記住要分割的。如果是更多的術語,請利用分組符號!

{Rich}