2016-09-02 5 views
2

Я довольно новичок в кодировании, и я пытаюсь найти минимум и максимум последовательности целых чисел, используя методы Math.min и Math.max. Я думаю, что я многое выяснил, но когда я тестирую его, это минимум -2147483648, а максимум 2147483647. Как я могу это изменить? Вот код:Java-Как найти значения min и max в последовательности целых чисел?

/** 
* 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 из коллекции, то использовать 'SortedSet', как' TreeSet', является хорошим способом. –

+0

Проблема задана Math.max и Math.min, но я буду помнить об этом в будущем, спасибо. – Tricia

+0

использование int высший = Math.MIN_VALUE; int lower = Math.MAX_VALUE; – Renukaradhya

ответ

7

Своп начальные условия для smallest и largest. Изменение

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

к

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

Поскольку ни int значение не меньше, чем MIN_VALUE (или больше, чем MAX_VALUE).

+0

Это имеет смысл, спасибо за вашу помощь. – Tricia

+0

@Tricia Здесь используется ваш отладчик, который должен помочь вам найти эту ошибку. –