2017-04-06 70 views
1

使用For循環和數組我目前在預AP計算機科學類。我們的老師已經爲我們分配了一個今晚午夜的項目。該項目要求您製作一個程序,詢問您的姓名,您輸入的成績等級,要求您的成績,平均成績,然後返回字母值(例如A,B,C)以及您的姓名(例如「Iqbal,Noor」)。我似乎已經將所有代碼都解決了出來,並且在我進入我的成績時只出現了一個界限錯誤。但是,我的老師說修復這個錯誤的唯一方法是讓一個巨大的for循環,並把我的整個代碼在裏面。對我來說沒有意義,所以如果是這樣的話,有人可以解釋嗎?計算最終成績在Java中

如果不是這種情況,我想知道該怎麼做。我不想讓別人給我一個答案,而是引導我思考如何解決這個問題。

這裏是我到目前爲止的代碼:

import java.util.*; 
public class Tester { 
public static void main (String[] args){ 
    //Prompt for first 
    //Prompt for last 
    //Prompt for # of assgmts to be averaged 
    //for-loop = prompt to enter # grade until all grades are entered (use []) 
    //loop through array again to calculate average 
    //print info 
    //prompt for multiple names and grades 
    Scanner kbInput = new Scanner(System.in); 
    System.out.println("How many students will you be entering?"); 
    int numOfStudents = kbInput.nextInt(); 
    String[] Students = new String[numOfStudents]; 

    int k; 
    for(k = 0; k < Students.length; k++){ 
     System.out.println("Enter your first name."); 
     String first = kbInput.next(); 
     System.out.println("Enter your last name."); 
     String last = kbInput.next(); 
     Students[k] = last + ", " + first; 
    } 

    String finalGrade = ""; 
    System.out.println("How many grades will you be entering?"); 
    int numOfGrades = kbInput.nextInt(); 
    int[] Grades = new int[numOfGrades]; 
    int sum = 0; 
    int j; 
    for (j = 0; j < numOfGrades; j++){ 
     System.out.println("Enter your grades."); 
     Grades[j] = kbInput.nextInt(); 
     sum+=Grades[j]; 
    } 
    int average = sum/numOfGrades; 
     if((average >= 90) && (average <= 100)){ 
      finalGrade = "A"; 
     } 
     else if((average >= 80) && (average < 90)){ 
      finalGrade = "B"; 
     } 
     else if((average >= 75) && (average < 80)){ 
      finalGrade = "C"; 
     } 
     else if((average >= 70) && (average < 75)){ 
      finalGrade = "D"; 
     } 
     else if(average < 70){ 
      finalGrade = "F"; 
     } 
     String[] letterGrade = new String[numOfStudents]; 
     int count; 
     for(count = 0; count < numOfStudents; count++){ 
      letterGrade[count] = finalGrade; 
     } 
    } 
} 

編輯:這裏是項目的方向:

  1. 創建一個新的Java項目叫做FinalGrade一個名爲測試的類。
  2. 提示用戶輸入一個學生的名字,緊接着又迅速進入學生的姓氏。
  3. 提示用戶輸入要平均分配的數量(例如6)。
  4. 使用一個for循環,提示用戶輸入數字級(僅限整數),直到對學生作業的確切數字被輸入。注意:等級應該存儲在一個數組中。
  5. 循環返回等級陣列並計算輸入等級的平均值。
  6. 在屏幕上打印以下信息(按所示順序)... a。學生的姓氏 b。學生的名字 c。學生的最終成績(顯示爲一個字母等級,而不是數值) 實例輸出... 霍華德,德里克 - 一個

超越... 1.改變你的應用程序,允許多個學生和檔次的條目。

+0

你正在努力爲你的成績輸入什麼? – Omore

+0

你的「成績」和你的「學生」之間沒有任何關係。所以每個學生都會喜歡同一個年級!我認爲你的老師的意思是爲循環做一個大的外部循環,執行'numberOfStudents'次。在這個for循環中詢問每個* one *學生的姓名和成績。然後繼續與下一個學生。考慮創建一個擁有詹姆斯和一個學生成績的'學生'類 –

+0

建議與您的特定問題無關:將您的代碼分解爲方法。這是一個很好的做法,有助於隔離問題,使代碼更具可讀性,劃分責任(*「分而治之」*),最重要的是,它可以更輕鬆地設計和編寫代碼。 – domsson

回答

1

,如果你正在評估使用點你的品位,使該加總可能分的方法,然後將您獲得的積分,然後除以找到十進制分數。一定要將該產品乘以100.然後,使用Math.round(),圍繞您的等級。

+1

作爲domdom評論上面,我也建議將你的代碼分爲方法。它使處理起來更容易。 – CodingNinja