2016-05-16 44 views
-1

我正在開發一個Java項目,它要求用戶輸入信息,如姓名,編號,數組中的分數。我需要幫助計算用戶輸入的平均分數以及如何找出誰的分數最高得分了。這裏是我的代碼:Array Java中的總和值

package finalproject; 
import java.util.Scanner; 
/** 
* 
* @author vincephng 
*/ 
public class FinalProject { 

    /** 
    * @param args the command line arguments 
    */ 

    public static void main(String[] args) 
    { 

     Scanner input= new Scanner(System.in); 
     Cis84[] student= new Cis84[50]; 

     int option; 

     for (int c = 0; c<50;c++) 
     student[c]=new Cis84(); 

     do{ 
      System.out.print(""); 
      System.out.println("1) Add Information"); 
      System.out.println("2) Show report"); 
      System.out.println("3) Exit"); 
      System.out.print("\nEnter option: "); 


      option = input.nextInt(); 

      switch(option) 
      { 
       case 1: 
        String n; 

        double g; 
        int index, i; 

        System.out.println("Which position of the student?"); 
        index=input.nextInt(); 

        System.out.println("What is the student's name:"); 
        n=input.nextLine(); 
        n=input.nextLine(); 

        System.out.println("What is student's Id"); 
        i=input.nextInt(); 


        System.out.println("What is student's score"); 
        g=input.nextDouble(); 

        student[index].setName(n); 
        student[index].setGrade(g); 
        student[index].setId(i); 
        break; 

       case 2: 
        for(int c=0; c<50;c++) 
        System.out.println(student[c]); 
        break; 
       case 3: 
        System.out.println("You are done"); 
        break; 
       default: 
        System.out.println("Try again"); 
        break; 
      } 

     }while (option != 3); 



    } 
} 

和類

package finalproject; 


public class Cis84 
{ 
    private String name; 
    private int id; 
    private double grade; 

    public Cis84() 
    { 
     name="not input yet"; 
     id= 00000; 
     grade= 0.0; 
    } 
    public Cis84(String n, int i, double g) 
    { 
     name= n; 
     id= i; 
     grade=g; 
    } 

    public void setName(String n) 
    { 
     name=n; 
    } 
    public void setId(int i) 
    { 
     id=i; 
    } 
    public void setGrade(double g) 
    { 
     grade=g; 
    } 

    public String getName() 
    { 
     return name; 
    } 
    public int getId() 
    { 
     return id; 
    } 
    public double getGrade() 
    { 
     return grade; 
    } 

    public String toString() 
    { 
     return String.format("%s\n%d\n%.2f\n", name, id, grade); 
    } 
} 
+0

使用'Arrays.deepToString()' – Shark

回答

1

你的toString方法不正確定義 - 它應該是toString,以小寫T,不ToString你目前有。順便說一句,爲什麼建議在覆蓋超類的方法時使用@Override註釋。如果你犯了一個微不足道的錯誤(比如錯字,或者混淆了你在這裏所做的事情),編譯器會提醒你,你做錯了,而不是讓你聲明另一個沒有任何東西的方法它本身是錯誤的,除非不是你想要覆蓋的方法。

總之,這裏的代碼應該是什麼樣子:

@Override // override annotation 
public String toString() { // correct method name 
    return String.format("%s\n%d\n%.2f\n", name, id, grade); 
} 
+0

請不要回答重複(或錯字的問題),你應該關閉,而不是按照[FAQ]( http://meta.stackexchange.com/a/10844) – Tunaki

0

您應該重寫public String toString()方法Cis84類。然後你可以使用下列方法之一:

for(Cis84 std: student){ 
    System.out.println(std); 
} 

Arrays.deepToString(student); 
0

在地方的

case 2: 
        for(int c=0; c<50;c++) 
        System.out.println(student[c]); 
        break; 

試試這個:

case 2: 
        for(int c=0; c<50;c++) 
        System.out.println(student[c].getName()+" "+student[c].getId()+" "+student[c].getGrade()); 
        break; 

正在打印的對象但實際上你想要的是在裏面的數據t對象。

1

你的錯誤是在這裏:

你寫這樣的:

public String ToString() { 
    return String.format("%s\n%d\n%.2f\n", name, id, grade); 
} 

而不是類對象的toString()方法。(注意,名稱不同,Java定義方法駝峯但是你做到了PascalCase)

你的意思是不是

@Override 
public String toString() { 
    return String.format("%s\n%d\n%.2f\n", name, id, grade); 
} 

AFTE你可以看到內容student[c]

+0

請不要回答重複(或關於此事的錯字問題),您應該按照[FAQ](http://meta.stackexchange.com/A/10844) – Tunaki