2016-01-23 135 views
0

這個程序是一個正在進行的工作。其中,我爲每個對象創建了包含五種不同數據類型的十個對象的數組。我需要找到q1的最高分數,我希望通過創建一個循環來將變量highScore與每個q1數據(8,3,10,8,9,5.5,8.5,6,7.5,7)進行比較該循環經歷了它的循環,但是,我收到一條錯誤消息,指出「運算符<未定義爲參數類型double,ClassGrade」,位於底部第二行。我不明白爲什麼我得到這個錯誤消息,但我懷疑我得到它的原因是,我沒有正確指定我想要從每個對象訪問的特定元素。任何關於此事的幫助將不勝感激。如何在Java中訪問數組對象的特定元素?

public class ClassGrade { 
public String studentID; 
public double q1; 
public double q2; 
public int mid; 
public int finalExam; 


public ClassGrade(String studentID, double q1, double q2, int mid, int finalExam) 
{ 
    // TODO Auto-generated constructor stub with a few modifications 
} 

public static void main(String[] args) { 
    System.out.println("this program works"); 
    double highScore; 
    highScore = 0; 
    ClassGrade [] student = new ClassGrade[10]; 
    student[0] = new ClassGrade ("A1", 8, 8.5, 84, 82); 
    student[1] = new ClassGrade ("B2", 3, 7, 0, 99); 
    student[2] = new ClassGrade ("C3", 10, 9.5, 92, 84); 
    student[3] = new ClassGrade ("D4", 8, 8, 89, 86); 
    student[4] = new ClassGrade ("E5", 9, 10, 83, 91); 
    student[5] = new ClassGrade ("F6", 7.5, 8.5, 88, 69); 
    student[6] = new ClassGrade ("G7", 8.5, 0, 81, 52); 
    student[7] = new ClassGrade ("H8", 6, 8.5, 79, 68); 
    student[8] = new ClassGrade ("I9", 7.5, 6, 72, 91); 
    student[9] = new ClassGrade ("J10", 7, 6.5, 58, 77); 
    for(int i=0; i<10; i++){ 
     if (highScore < student[i]) 
      highScore = student[i]; 

    } 




} 

}

+3

提示1:

int score = student[i].getQ1() if (highScore < score) highScore = score; 

爲如何在一個數組訪問對象的成員的示例見here的TODO是有一個很好的理由:) – qqilihq

+0

另一個提示:學生[I]的訪問該索引處的ClassGrade對象。您仍然需要指定諸如student [i] .q1之類的字段。 –

回答

1

首先,你需要指定你的實例變量在你的構造函數。

你正在比較一個雙(高分)與ClassGrade(學生[我])。

您需要在ClassGrade中創建公共方法來返回所需的屬性。

從數組訪問對象的屬性與從單個對象訪問對象的方式相同。您從數組中獲取對象並使用'。'訪問其公共財產或方法。例如:

array[i].method()

0

您的高分與數組中的實際對象比較,你是比較級的學生,所以只是做一些小的變化 - 在你ClassGrade類中聲明的方法一樣getQ1(),然後從循環進入Q1

0

這應該工作:

ClassGrade classGrade = (ClassGrade) student[i]; 
classGrade.method(); 
+0

你能解釋它是如何幫助嗎? – Phani

0

陣列的每個成員仍然是一個ClassGrade,因此,所有你需要做的是檢查其q1我像你一樣的任何其他ClassGrade的q1。

for(int i=0; i<10; i++){ 
    if (highScore < student[i].q1) 
     highScore = student[i].q1; 
} 

想一想,就好像數組索引是名稱的一部分,它會更有意義。

// Consider this: 
studentZero = new ClassGrade("A1", 8, 8.5, 84, 82); 

if (highScore < studentZero) 
    highScore = studentZero; 

// studentZero is not a double. Therefore... 
if (highScore < studentZero.q1) 
    highScore = studentZero.q1; 

或者,您可以爲q1添加吸氣劑並使用它。