2013-10-07 43 views
0

我應該從一系列數字中獲得最小和最大的數字。我知道每種方法的方法體可能都不正確。任何幫助?如何正確獲取數字序列中的最大和最小數字?

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

    public DataSet() 
    { 
    sum = 0; 
    count = 0; 
    largest = 0; 
    smallest = 0; 
    } 

public void addValue(int x) 
    { 
    sum = sum + x; 
    count++; 
    } 

public int getSum() 
{ 
    return sum; 
} 

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

public int getLargest() 
{ 
    int largest = Integer.MAX_VALUE;//not giving right answer, don't know how to use 
    return largest; 
} 

    public int getSmallest() 
{ 
    int smallest = Integer.MIN_VALUE;//not giving right answer, don't know how to use 
    return smallest; 
    } 
} 

下面是測試類,如果它是需要的,雖然我不認爲問題就出在這裏。

public class DataSetTester 
{ 
    public static void main(String[] args) 
    { 
    DataSet myData = new DataSet(); 
    myData.addValue(100); 
    myData.addValue(5); 
    myData.addValue(4); 
    myData.addValue(2); 

    System.out.println("Sum = " + myData.getSum()); 
    System.out.println("Average = " + myData.getAverage()); 
    System.out.println("Largest value = " + myData.getLargest()); 
    System.out.println("Smallest value = " + myData.getSmallest()); 
    } 
    } 

回答

5

Integer.MAX_VALUEInteger.MIN_VALUE返回是一個Integer值表示的最大和最小數

取而代之的是,在您添加方法,需要進行比較的值,因爲它們的加入,您可以使用Math.minMath.max,使比較容易,例如...

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

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

這是一個相當簡單的任務,你可能只是在想太硬的。添加一個值時,必須通過向addValue()添加一些if語句來檢查最小值還是最大值。

public void addValue(int x) 
    { 
     sum = sum + x; 
     count++; 
     if(x > largest) 
      largest = x; 
     else if(x < smallest) 
      smallest = x; 
    } 

之後,您只需返回getSmallest和getLargest方法中的最大和最小值。他們應該看起來像這樣:

public int getLargest() 
    { 
    return largest; 
    } 

    public int getSmallest() 
    { 
    return smallest; 
    } 
+0

我不允許爲此使用if語句。 – user2840682

+0

@Derv請將此評論置於有問題的位置,並將MadProgrammer的答案標記爲已接受:D –

0

有幾種方法可以做到這一點。一個簡單的解決方法是修改您的addValue()方法:

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

public void addValue(int x) { 
    sum = sum + x; 
    count++; 
    this.largest = (x > this.largest) ? x : this.largest; 
    this.smallest = (x < this.smallest) ? x : this.smallest; 
} 

而且,你將需要刪除的行:

int largest = Integer.MAX_VALUE; 

int smallest = Integer.MIN_VALUE; 

從干將。

相關問題