2014-10-07 3 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

+1

Вы добавляете ввод дважды к сумме. – Tom

+0

Вы должны подсчитать количество действительных входов. Возможно, вы намеревались 'averageScore = (double) sum/numberExams;' –

ответ

1

Вы должны сделать проверку для диапазона первых перед назначением на min или max.

Это работает:

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); 
} 

Обратите внимание, что у вас еще есть вопрос, что если вы получаете неверный ввод, вы будете подсчитывать неправильное количество баллов. Вы можете справиться с этим несколькими разными способами. Можно было бы уменьшить i внутри блока else.

1

Вы делаете sum = sum + inputNumber дважды в своем for-loop.

Кроме того, вам нужно конвертировать int с до double вычислить в среднем:

double average = ((double) sum)/numberExams; 
Смежные вопросы