2017-04-18 109 views
1

我有這個代碼的邏輯錯誤。我需要從用戶那裏得到十個int輸入,然後輸出大於10的任何數字。唯一的問題是,如果數組中最後一個數字大於10,它將不會打印。邏輯錯誤與陣列

public class Bigger10 
    { 
     public static void main(String[] args) 
     { 
      System.out.println("Please enter 10 integer numbers"); 

      int[] num = new int[10]; 
      int count = 0; 
      int num1 = StdIn.readInt(); 

      while(count<9) 
      { 
       num[count] = num1; 
       count++; 
       num1 = StdIn.readInt(); 
      } 

      for(int i = 0;i<count;i++) 
      { 
       if(num[i]>10) 
       { 
        System.out.printf("%d ", num[i]); 
       }  
      } 
     } 
    } 
+3

這是因爲你只是檢查,直到第8個指標,即只有第9個元素 – warl0ck

+0

'for(int i = 0; i Misys

回答

4

依靠數組來告訴你它有多大而不是常數9

修復很簡單:在你的循環中,改爲遍歷其長度。

while(count < num.length) { 

} 
+0

當我這樣做時,錯誤:線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:10.這只是意味着它大於數組大小嗎? – Ngroenewold

1
 int num1 =0; 

     while(count<=9) 
     { 
      num1 = StdIn.readInt(); 
      num[count] = num1; 
      count++; 

     } 

count<=9,因爲您需要掃描10個值。如果是<9,那麼你只能掃描9個值。

num1 = StdIn.readInt();應該是while循環中的第一條語句。如果您將其添加到最後,則您正在掃描一個額外的號碼。這個數字不會被加到數組中,因爲循環條件變成false,即count變爲10.所以最後一個數字不會被打印,因爲它沒有被添加到數組中。