2015-11-17 3 views
-3

Как найти наименьшее число в массиве? Проблема с моим кодом заключается в том, что он всегда печатает 0 как наименьшее число.Наименьшее число в массиве

вот мой код:

import java.util.Scanner; 
public class Exercise1 { 
    public static void main (String [] args){ 
    Scanner kb = new Scanner(System.in); 
    System.out.print("Please type the total number of marks: "); 
    int SIZE = kb.nextInt(); 

    double [] marks = new double [SIZE]; 

    double smallest = marks [0]; 
    for (int i=0;i<SIZE;i++){ 
     System.out.print("Enter the mark: "); 
     marks[i]=kb.nextDouble(); 

     if(marks[i] < smallest) { 
      smallest = marks[i]; 
    } 

    } 
    System.out.println("The lowest number is " + smallest); 
} 
} 
+2

Почему ваш код печатает что-либо кроме 0? –

+1

Подумайте ... что такое значение 'smallest' в' double smallest = marks [0]; ', а затем значение' marks [i] 'at' if (marks [i]

+0

@Sortirios: Потому что пользователь вводит отрицательное число ... –

ответ

0

Поскольку вы создаете фиксированный массив размера. Поэтому, когда вы назначаете маленькими, весь пункт в вашем массиве 0, так что это будет 0.

Вы должны изменить свой код:

double smallest; 
for (int i = 0; i < SIZE; i++) { 
    System.out.print("Enter the mark: "); 
    marks[i] = kb.nextDouble(); 

    if (i == 0) { 
     smallest = marks[0]; 
    } 
    if (marks[i] < smallest) { 
     smallest = marks[i]; 
    } 
} 
+0

Я действительно не вижу, как это решает его проблему. Утверждение 'if', которое вы вводите, совпадает с тем, что у него выше. Единственное различие заключается в том, что он сделал это перед циклом, и вы сделали это в цикле. Это на самом деле менее эффективно, потому что в этом случае нужно будет проверять время 'SIZE'. Если я ошибаюсь, сообщите мне. –

+0

@LawrenceAiello это все равно, когда ввод имеет значение, меньшее или равное 0, если вы похожи на этого парня, и все ваши данные больше 0, наименьшее всегда будет 0 - начальное значение значений фиксированного массива. Мое решение наверняка, что начальное наименьшее является первым значением массива, а не начальным значением. – codeaholicguy

0

Вашего массив не имеет ничего в ней. Заполните массив допустимыми значениями и повторите попытку и посмотрите, что произойдет. В Java, arrays consisting of doubles are initialized according to this spec, поэтому весь массив в данный момент содержит значения 0.0d.

Смежные вопросы