2017-03-28 2 views
-1

나는 내 유니에서 숙제를하고 있지만이 질문에 대해서는 상당히 고민 중입니다. 사용자가 -1을 입력 할 때까지 정수로 읽습니다. 최소 3 개 이상의 값이있는 경우 최대 값과 최소값을 제외한 평균값을 표시하십시오. 이것은 내 코드이지만 평균을 얻으려면 가장 큰 숫자와 가장 작은 숫자를 제거하지 않는 것처럼 보입니다.BlueJ의 최소 최대 값

import java.util.Scanner; 
public class MiddleAverage { 
    public static void main(String[] args) { 
     int sum; 
     int count; 
     int min = Integer.MAX_VALUE; 
     int max = Integer.MIN_VALUE; 
     double average; 
     sum = 0; 
     count = 0; 
     average = 0; 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Value: "); 
     int value = scanner.nextInt(); 
     while (value != -1) 
     { 
      if (value < min) 
      min = value; 

      if (value > max) 
      max = value; 

      System.out.print("Value: "); 
      value = scanner.nextInt(); 
      count++; 
      sum = sum + value; 
      average = sum/count; 
     } 
     if (value == -1) 
     { 
      System.out.println("Middle average is: " + average); 
     } 



    } 
} 

제게 설명 해주십시오. 고맙습니다!

+1

당신은'min'과'max' 값을 추적하고 있습니다. 평균을 인쇄하기 전에 제거하려면 코드를 작성해야합니다. –

+0

안녕하십니까. 또 하나의 질문은 코드가 "while"루프 내부 또는 "If"루프 내부에서 코드를 수행한다는 것입니다. 고마워요 – COI

+0

거기 _is no_ if 루프. if 문만 있습니다. –

답변

0

코드에서 값을 입력 할 때마다 평균을 계산합니다. 결국 평균값 만 필요하기 때문에 약간 낭비입니다. (그것은 또한 하드 최소 & 최대를 제거 할 수 있습니다!)

내가 당신의 코드를 약간 변경 한, 좀 걸릴 :

int sum = 0, count = 0; // Condensed a few lines 

int min = Integer.MAX_VALUE; 
int max = Integer.MIN_VALUE; 

Scanner scanner = new Scanner(System.in); 
int value; 

System.out.print("Value: "); 
value = scanner.nextInt(); 

while (value != -1) { 

    if (value < min) 
     min = value; 

    if (value > max) 
     max = value; 

    count++; 
    sum = sum + value; 

    System.out.print("Value: "); 
    value = scanner.nextInt(); 
} 

// You don't need to check if it's -1 because it MUST be in order to leave the loop 
if (count >= 3) { 
    System.out.println("Middle average is: " + (sum - max - min)/(count - 2)); 
} else { 
    // Less then 3 values 
} 

건배!

+0

감사합니다. 많은 감사합니다. – COI

+0

도움이되기를 바랍니다! 이 작업을 수행하는 데는 몇 가지 다른 방법이 있다는 점에 유의해야합니다. 이미 수행 한 작업을 수행하려고했습니다. 또한, 유용한 정보를 upvote/accept하는 것을 잊지 마세요.) –

+0

정수 나누기에주의하십시오.'/'피연산자 중 하나를 부동 소수점 유형으로 캐스팅해야합니다. 그렇지 않으면 완전한 답을 얻을 수 있습니다. –