2014-10-07 90 views
1

我似乎无法弄清楚如何计算用户输入的分数数量的平均分数。我也无法让它停止输入超过100或小于0的输入。有人可以告诉我我做错了什么吗?谢谢。需要帮助找到平均值

public static void main(String[] args) { 


    Scanner scan = new Scanner(System.in); 

    int sum = 0; 
    int inputNumber; 
    int numberExams; 
    float averageScore; 
    double max = 0; 
    double min = 101;  


    System.out.println("Enter the total number of exams you want a average"); 
    numberExams = scan.nextInt(); 

    System.out.println("Please enter " + numberExams + " numbers:"); 

    for(int i = 1; i<=numberExams ;i++){   
    inputNumber = scan.nextInt(); 
    sum = sum + inputNumber; 
    System.out.println(); 

    if(inputNumber > max){ 
    max = inputNumber; 
} 
    if(inputNumber < min){ 
    min = inputNumber; 
} 
    if(inputNumber > -1 && inputNumber < 101){ 
    sum = sum + inputNumber; 
} 
    else{ 
    System.out.println("You entered a number that wasn't in the range of 0 to 100"); 
} 
} 


    averageScore = sum/numberExams; 

System.out.println("The Max Exam Score is: " + max); 
System.out.println("The Minimum Exam Score is: " + min);  
System.out.println("The Average Exam Score is: " + averageScore); 
} 
} 
+1

检查发生了什么'min'和'max'当你输入一个无效的条目。 (此外,您总是会在糟糕的输入以及良好的情况下增加'numberExams'。) – usr2564301 2014-10-07 20:19:22

+1

您将输入两次添加到总和。 – Tom 2014-10-07 20:19:49

+0

您应该计算有效输入的数量。也许你打算'averageScore =(double)sum/numberExams;' – 2014-10-07 20:19:59

回答

1

你应该让你的范围内,首先检查分配给minmax之前。

这工作:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 

    int sum = 0; 
    double averageScore; 
    double max = 0; 
    double min = 101; 

    System.out.println("Enter the total number of exams you want a average"); 
    final int numberExams = scan.nextInt(); 

    System.out.println("Please enter " + numberExams + " numbers:"); 

    for (int i = 0; i < numberExams; ++i) { 
    final int inputNumber = scan.nextInt(); 

    if (inputNumber >= 0 && inputNumber <= 100) { 
     System.out.println(); 

     if (inputNumber > max) { 
     max = inputNumber; 
     } 
     if (inputNumber < min) { 
     min = inputNumber; 
     } 
     sum += inputNumber; 
    } 
    else { 
     System.out.println("You entered a number that wasn't in the range of 0 to 100"); 
    } 
    } 

    averageScore = sum/numberExams; 

    System.out.println("The Max Exam Score is: " + max); 
    System.out.println("The Minimum Exam Score is: " + min); 
    System.out.println("The Average Exam Score is: " + averageScore); 
} 

请注意,您仍然有,如果你收到无效的输入,你来数错号码得分的问题。你可以通过几种不同的方式来处理。其中一个是在else区块内减少i

1

您在for-loop中做了两次sum = sum + inputNumber

此外,您需要将您int秒值进行转换,以double计算平均:

double average = ((double) sum)/numberExams;