2013-03-10 27 views
1

感謝您的幫助。使用Java陣列獲取最小和最大

這裏是分配:

計算機技術指導員有一個小班的10名學生。教師通過管理2個期中考試和期末考試來評估班上學生的表現。 編寫一個程序,提示教師輸入中期1的10個等級,並將這些數字存儲在一個數組中。接下來提示中期2的10個等級,並將這些數字存儲在不同的數組中。接下來提示進行期末考試的10個等級,並將其存儲在不同的陣列中。接下來添加midterm1到midterm2到Final,並將總計存儲在不同的數組中。 接下來,掃描包含總數的數組,並確定最低等級和最高等級。告知教師最低等級和最高等級。

這兩個大膽的短語是我有問題的地方。除了最低等級和最高等級之外,一切都有效。這裏是它告訴我,之後我只有65和100之間輸入的數字:

最高測試成績爲:276,最低測試成績爲:249

這裏是我的代碼:

import java.util.Scanner; 

public class Arrays { 
    public static void main(String[] args) { 
     // Create a scanner 
     Scanner input = new Scanner(System.in); 
// Prompt for the 1st mid term 
    int [] midTerm1 = new int[10]; 
    int [] midTerm2 = new int[10]; 
    int [] finalExam = new int[10]; 
    int [] grades = new int[10]; 

    for (int i = 0; i < midTerm1.length; i++){ 
     System.out.println("Enter the 10 Mid Term 1 grades: "); 
     midTerm1[i] = input.nextInt(); 
    } 

    // Prompt for the 2nd mid term 


    for (int i = 0; i < midTerm2.length; i++){ 
     System.out.println("Enter the 10 Mid Term 2 grades: "); 
     midTerm2[i] = input.nextInt(); 
    } 


    // Prompt for Final grades 


    for (int i = 0; i < finalExam.length; i++){ 
     System.out.println("Please enter a Final Exam grade: "); 
     finalExam[i] = input.nextInt(); 
    } 



    for (int i = 0; i < grades.length; i++){ 
     grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]); 
    } 

    int minGrade = grades[0]; 
    int maxGrade = grades[0]; 

    for (int i = 0; i < grades.length; i++) 

    { 
    if (minGrade > grades[i]) 
     minGrade = grades[i]; 
    if (maxGrade < grades[i]) 
     maxGrade = grades[i]; 

    } 


    System.out.print("The highest test score is: " + maxGrade); 
    System.out.print("The lowest test score is: " + minGrade); 

} 
} 

回答

4

編輯:

grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]); 

您的代碼實際上可能是正確的。既然你將你的三個測試成績一起,想到的是分數,將是與100之間,而195和300

之間沒有65,但如果你想65和100之間的數字,這需要由3分:

grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i])/3; 

要不找一些其他的方式來正常化成績。舉例來說,如果最終是品位50%,那麼你可以有:

grades[i] = (25 * midTerm1[i] + 25 * midTerm2[i] + 50 * finalExam[i])/100; 

但再次當前解決方案實際上可能是正確的。

+0

基於這些指令,它似乎並不像最小和最大應該是它似乎65和100之間並不像它想讓他們被平均或以任何方式,它只是總想加權。 – 2013-03-10 20:55:31

+0

@AlliK:謝謝,是的,我同意,這就是爲什麼我編輯了我的答案並添加了最後一行。 – 2013-03-10 20:58:07

+1

我覺得@Christf不知道該代碼是正確的,雖然基於這些指令,所以我只是想指出這一點。最小和最大的代碼是正確的。 – 2013-03-10 21:02:24