2012-10-07 6 views
2

이 가능하므로 합계, 평균 및 최소값과 최대 값을 출력하는 프로그램을 만들려고합니다. 저는 기본적으로 가장 작은 값과 가장 큰 값이 2147483647과 -2147483647을 출력한다는 것을 제외하고는 모든 것을 가지고 있습니다. 이것은 Java가 계산할 절대 값이 가장 작고 가장 큰 값이라고 생각합니다. 어쨌든, 나는 사용자가 입력 한 숫자를 계산하기를 원하기 때문에 이것은 분명 정확하지 않습니다.최대 값과 최소값을 출력하는 Math.max와 Math.min은

여기 내 수업이 있습니다. addValue 메서드에서 뭔가 잘못되었다고 가정합니다.

public class DataSetTester { 
public static void main(String[] arg) { 
    DataSet ds = new DataSet(); 
    ds.addValue(13); 
    ds.addValue(-2); 
    ds.addValue(3); 
    ds.addValue(0); 
     System.out.println("Count: " + ds.getCount()); 
     System.out.println("Sum: " + ds.getSum()); 
     System.out.println("Average: " + ds.getAverage()); 
    System.out.println("Smallest: " + ds.getSmallest()); 
     System.out.println("Largest: " + ds.getLargest()); 
} 
} 

모두가 최소 및 최대 숫자를 제외하고 (계산, 합계, 평균)이 제대로 출력 :

public class DataSet 
{ 
private int sum; 
private int count; 
private int largest; 
private int smallest; 
private double average; 

public DataSet() 
{ 
    sum = 0; 
    count = 0; 
    largest = Integer.MAX_VALUE; 
    smallest = Integer.MIN_VALUE; 
    average = 0; 
} 

public void addValue(int x) 
{ 
    count++; 
    sum = sum + x; 
    largest = Math.max(x, largest); 
    smallest = Math.min(x, smallest); 
} 

public int getSum() 
{ 
    return sum; 
} 

public double getAverage() 
{ 
    average = sum/count; 
    return average; 
} 

public int getCount() 
{ 
    return count; 
} 

public int getLargest() 
{ 
    return largest; 
} 

public int getSmallest() 
{ 
    return smallest; 
} 

} 

그리고 여기에이 프로젝트에 대한 내 테스터 클래스입니다. 누군가 내가 잘못하고있는 일의 올바른 방향으로 나를 지적 할 수 있다면 그것은 좋을 것입니다. 감사.

largest = Integer.MIN_VALUE; 
smallest = Integer.MAX_VALUE; 
+0

레코드의 경우, 가장 작은'int' 값은'-2147483647'이 아닌'-2147483648'입니다. –

답변

6
largest & smallest 초기 값을 역

Math.max & Math.min 그에 따라 올바른 값을 선택합니다 : Integer.MIN_VALUE으로

largest = Integer.MIN_VALUE; 
smallest = Integer.MAX_VALUE; 

가장 작은 수

+0

고맙습니다. 그 마지막 부분은 정말로 나를 위해 그것을 정리했다. 도와 주셔서 감사합니다. – user1696162

2

에서 당신이 당신의 초기화에 의미 생각 값은 정수이고 문은 다음과 같습니다.

largest = Math.max(x, largest); 

값이 처음으로 호출 될 때 x이됩니다.

+0

아, 내 역할에 어리석은 실수. 답장을 보내 주셔서 감사합니다. 최대 값을 찾으려고 할 때 Integer.MIN_VALUE를 사용해야하는 이유는 무엇입니까? Integer.MAX_VALUE에 대해서도 마찬가지입니까? 최대 값은 최대 값과 같아 보입니다. – user1696162

+0

@ Reimeus가 말한 바 : –

관련 문제