2016-09-02 11 views
2

私はかなり新しくコーディングしています。Math.minとMath.maxメソッドを使用して、整数のシーケンスの最小値と最大値を見つけることを試みています。私はほとんどのことが分かっていると思いますが、テストすると最小値は-2147483648、最大値は2147483647です。どのように変更できますか?ここでJava - 整数の順序で最小値と最大値を見つける方法は?

/** 
* A class to find largest and smallest values of a sequence. 
**/ 
public class DataSet 
{ 
    private int smallest = Integer.MIN_VALUE; 
    private int largest = Integer.MAX_VALUE; 
    /** 
    * Adds in integer to sequence. 
    * @param x the integer added 
    */ 
    public void addValue(int x) 
    { 
    smallest = Math.min(smallest, x); 
    largest = Math.max(largest, x); 
    } 
    /** 
    * Returns the smallest value. 
    * @return the smallest value 
    */ 
    public int getSmallest() 
    { 
    return smallest; 
    } 
    /** 
    * Returns the largest value. 
    * @return the largest value 
    */ 
    public int getLargest() 
    { 
     return largest; 
    } 
} 

をテスターです: は、ここでは、コードです

/** 
* A class to test the DataSet class. 
*/ 
public class DataSetTester 
{ 
    public static void main(String[] args) 
    { 
     DataSet myData = new DataSet(); 
     myData.addValue(11); 
     myData.addValue(4); 
     myData.addValue(6); 
     myData.addValue(9); 
     System.out.println("Smallest: " + myData.getSmallest()); 
     System.out.println("Expected: 4"); 
     System.out.println("Largest: " + myData.getLargest()); 
     System.out.println("Expected: 11"); 
    } 
} 
+1

残念ながら、コレクションのmax要素とmin要素が必要だった場合は、 'TreeSet'のような' SortedSet'を使うのが良い方法です。 –

+0

問題はMath.maxとMath.minを求めましたが、将来的にはこの点を心に留めておきます。 – Tricia

+0

use int highest = Math.MIN_VALUE; int lowest = Math.MAX_VALUE; – Renukaradhya

答えて

7

スワップsmallestlargestの初期条件。何int値がMIN_VALUE(又はMAX_VALUEより大きい)よりも小さくないので

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

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

を変更します。

+0

それは意味がある、あなたの助けに感謝します。 – Tricia

+0

@Triciaこれは、あなたのデバッガを使ってこのバグを見つけたはずです。 –

関連する問題