2014-10-12 107 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