2015-10-21 4 views
-3

Пожалуйста, помогите мне разобраться в моих ошибках. Когда я ввожу оценки в порядке возрастания, например, 4,5, минимальный задается как 100.Я не знаю, как его изменить?Поиск min и max с использованием Java

Вот мой код:

float score=0,min=100,max=0,sum1=0,count=0,sum2=0; 
    float average,sd; 
    Scanner a=new Scanner(System.in); 

    while(score>=0) 

    { 
     System.out.println("enter the score(a negative score to quit)"); 
     score=a.nextInt(); 
     if(score<0) 

     break; 

     if(score>=max){ 
    max=score; 
    sum1+=max; 



    } 

     else 
    { 
    min=score; 
    sum2+=min;       

    } 


     count++; 
      } 

     average=(sum1+sum2)/(count++); 

    System.out.println("the average : " + average); 
    System.out.println("the maximum score: "+ max); 


    System.out.println("the min score: "+ min); 

ответ

0

изменить ваш else к else if (score < min) и вы получаете правильный минимум.

Причина, он проверяет, является ли score, если больше, то текущий max, если это не так, то он просто не предположить, из-за другого, что score является новым min.

if (score >= max) { 
    max = score; 
} 
else if (score < min){ 
    min = score; 
} 
// Just add the score value to the sum, it doesn´t matter if it´s min or max 
sum2 += score; 
count++; 
+0

Я только что проверил ваш код.иты все тот же минимум.no changes.um .. – vini

0

Simplify:

while((score = a.nextInt()) >= 0) { 
    min = Math.min(min, score); 
    max = Math.max(max, score); 
    sum += score; 
    average = sum/count++; 
} 
0

Я думаю, что вы усложнять проблему: вы должны попытаться думать о задаче в логических шагов:

  1. есть пользователи ввода номера
  2. Добавить следующий int, который пришел к общему счету
  3. Проверьте, есть ли следующий int> Последний известный максимум, если это так, установите последний известный максимум до значения следующего INT в
  4. Else проверить, если следующий INT < последнего известный минимум, если да, то установите последний известный как минимум до значения следующего INT в
  5. продолжаются, пока есть еще вход доступен
  6. печати максимальный балл
  7. Вычислить и напечатать средний балл (totalScore/amountOfInputs)
  8. Печать минимальная оценка

что бы выглядеть следующим образом:

import java.util.*; 

public class MaxMinAverage { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     double score, currentMinimum = Integer.MAX_VALUE, currentMaximum = Integer.MIN_VALUE, count; 
     while (in.hasNextInt()) { 
      int nextInt = in.nextInt(); 
      if (nextInt < 0) { //break out of the loop 
       break; 
      } else { 
       score += nextInt; 
       count++; 
       if (nextInt > currentMaximum) { 
        currentMaximum = nextInt; 
       } else if (nextInt < currentMinimum) { 
        currentMinimum = nextInt; 
       } 
      } 
     } 
     System.out.println("Max: " + currentMaximum); 
     System.out.println("Avg: " + (score/count)); 
     System.out.println("Min: " + currentMinimum); 
    } 
} 
Смежные вопросы