2014-10-07 84 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;