2015-11-17 37 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

想一想......在'double smallest = marks'[0];'處標記'smallest'的值是多少,然後'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'陳述與上面的陳述相同。唯一的區別是他在循環之前做了它,並且在循環中做了它。這實際上效率較低,因爲if語句必須檢查'SIZE'次。如果我錯了,請告訴我。 –

+0

@LawrenceAiello它只有在輸入的值小於或等於0時纔是一樣的,如果你喜歡那個人,並且你所有的輸入都大於0,那麼最小值總是0就是固定數組值的初始值。我的解決方案確保最初的最小值是數組的第一個值,而不是初始值。 – codeaholicguy