2014-10-12 105 views
0

我正在用Java構建一個年級計算器,我在添加一些功能時遇到了麻煩,而且我似乎在嘗試做出改變。我整個星期都在努力研究它,並在書中和幻燈片中重新開始,我只是覺得還有一些片段我還沒有得到。指導所需的無效的輸入錯誤和級別計算器的協作類統計

我需要確保無效分數,重新輸入錯誤每次出現負分時輸入。然後我需要計算平均分,最低分和最高分的班級統計。所以基本上是輸入多少數據的協作,可以是任意數量的考試或學生。

這是我的代碼,請讓我知道,如果你需要更多的信息。我對此很新,所以我很抱歉,這不是最好的。

import java.util.Scanner; 

public class GradeCalculator { 

public static void main(String[] args){ 

    double examAverage = 0, scoresEntered = 0, examSum = 0; 
    double totalExamSum = 0, allScoresEntered = 0; 
    //variables for input 

    Scanner GC = new Scanner(System.in); 
    //Scanner for integer inputs 

    System.out.println("Welcome to Grade Calculator!" +"\n"); 

    System.out.println("Please enter the number of students:"); 
     int numberStudents = GC.nextInt(); 
     //number of students input 

    System.out.println("Please enter the number of exams:"); 
     int numberOfExams = GC.nextInt(); 
     //number of exams input 

     for (int i = 1; i <= numberStudents; i++) { 
      Scanner name = new Scanner(System.in);     
      //scanner for student name input 
      //Scanner for name input 
      System.out.println("\n--------------------------------------"); 

      System.out.print("Enter student " + i + "'s name : "); 
      String studentname = name.nextLine(); 
      //student name input 

      System.out.print("Enter exam scores  : "); 

     for (int j = 0; j < numberOfExams; j++) { 
      scoresEntered = GC.nextDouble(); 
      examSum = (examSum + scoresEntered);} 
      //score input and sum of all input scores 
     do{ 
       System.out.println("Invalid exam scores, reenter: "); 
       scoresEntered =GC.nextDouble(); 
     } while(scoresEntered<0); 
     //my attempt at the Invalid exam score error 

     examAverage = (examSum/numberOfExams); 
     //examaverage calculator 

     System.out.println("\n--------------------------------------"); 

      System.out.println("Grade Statistics for " + name); 
      System.out.println(" Average : " + examAverage); 

    //Conditions and print outputs below for grade averages 
    if(examAverage <= 100 & examAverage >=90){ 
     System.out.println(" Letter Grade: A"); 
     System.out.println(" " + name + " gets 4 stars! ****"); 
     examAverage = 0; 
     examSum = 0;} 

     else if(examAverage <=89.99 & examAverage >=80){ 
      System.out.println(" Letter Grade: B"); 
      System.out.println(" " + name + " " + " gets 3 stars! ***"); 
      examAverage = 0; 
      examSum = 0;} 

     else if(examAverage <=79.99 & examAverage >=70){ 
      System.out.println(" Letter Grade: C"); 
      System.out.println(" " + name + " " + " gets 2 stars! **"); 
      examAverage = 0; 
      examSum = 0;} 

     else if(examAverage <=69.99 & examAverage >=60){ 
      System.out.println(" Letter Grade: D"); 
      System.out.println(" " + name + " " + " gets 1 stars! *"); 
      examAverage = 0; 
      examSum = 0;} 

     else if(examAverage <=59.99 & examAverage >=50){ 
      System.out.println(" Letter Grade: F"); 
      System.out.println(" " + name + " " + " gets 0 stars!"); 
      examAverage = 0; 
      examSum = 0;} 

    //still need class statistics as well as help with the invalid exam scores, reenter error. 
      } 
     } 
} 

回答

0

什麼跳出我是在你的分數輸入的循環:

for (int j = 0; j < numberOfExams; j++) 
{ 
    scoresEntered = GC.nextDouble(); 
    examSum = (examSum + scoresEntered); 
} 

//score input and sum of all input scores 
do 
{ 
    System.out.println("Invalid exam score, reenter: "); 
    scoresEntered = GC.nextDouble(); 
} while(scoresEntered < 0); 

我特意重新格式化你貼什麼嘗試使問題更加明顯。你看起來在做的是讀所有的分數。然後,不管輸入什麼,你告訴用戶考試分數是無效的,並要求他們重新輸入。請記住,do ... while循環總是執行至少一次。如果第一次重新輸入的分數高於零,那麼只要滿足條件即可。

如果您嘗試之前它被添加到examSum驗證每個分數,你需要更多的東西是這樣的:

for (int j = 0; j < numberOfExams; j++) 
{ 
    while ((scoresEntered = GC.nextDouble()) < 0) 
    System.out.println("Invalid exam scores, reenter: "); 

    examSum = (examSum + scoresEntered); 
} 
+0

哦,我的天哪,幫助了很多。非常感謝!哇,即使你大聲朗讀,它也很有意義。像這樣,它等於0打印此。再次感謝你! – pau85 2014-10-12 13:14:34