2016-04-08 122 views
0

只要布爾方法返回true,我的代碼似乎都能正常工作。然而,當試圖測試錯誤,用戶輸入10個數字,我收到以下錯誤後:修復主線程異常

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 
at FunArrays.main(FunArrays.java:15 

我缺少什麼或者我的代碼俯瞰?

這裏是我的代碼:

import java.util.Scanner; 

public class FunArrays { 

public static void main(String[] args) { 
     Scanner input = new Scanner (System.in); 

     System.out.println("Please enter ten numbers...."); 

      int [] userArray = new int [9]; 

     for(int b = 0; b < 10 ; b++){ 
      userArray [b] = input.nextInt(); 
     } 

      boolean lucky = isLucky(userArray); 
       if (lucky){ 
         sum(userArray); 
    } else 
     sumOfEvens(userArray); 

} 



public static boolean isLucky(int [] numbers){ 

    for (int i = 0; i <= numbers.length; i++){ 
     if (numbers[i]== 7 || numbers[i] == 13 || numbers[i] == 18){ 
      return true; 

     } 

    } 
    return false; 

} 



public static void sum(int [] numbers){ 
    int sum = 0; 
    for (int x = 0; x <= numbers.length -1; x++){ 
     sum += numbers[x]; 

    } 
    System.out.println(sum); 
} 

public static void sumOfEvens(int [] numbers){ 
    int evens = 0; 
    for (int y = 0; y <= numbers.length -1; y++){ 
     if (numbers[y] % 2 == 0){ 
      evens += numbers[y]; 
     } 
    } 
    System.out.println(evens); 
} 

} 
+0

usersArray是長度爲9(0 ... 8) - 但是你的循環從0到9運行。所以當b是9時,你超出了數組的範圍。 – matmo

+0

您正在創建包含9個元素的數組 – Subhiksh

+0

請記住,數組是'0-indexed'。這是每個程序員都會遇到的問題之一。 :) –

回答

0

您正在進入10個號碼,但你的數組只有9個點。它更改爲

int [] userArray = new int [10]; 
0
int [] userArray = new int [9]; 

    for(int b = 0; b < 10 ; b++){ 
     userArray [b] = input.nextInt(); 
    } 

你的陣列大小是9(從索引0至索引8)和從0到9(10例)的循環增量b 在這種情況b應在小於9你的循環。

所以,你可以通過這個代碼替換:

int maxInput = 9; 
int [] userArray = new int [maxInput]; 

    for(int b = 0; b < maxInput ; b++){ 
     userArray [b] = input.nextInt(); 
    } 
+0

當我更正問題時,我收到以下錯誤消息:線程「主」java.lang.ArrayIndexOutOfBoundsException中的異常:10在FunArrays.isLucky(FunArrays.java:32)在FunArrays.main(FunArrays.java:18)現在在那裏是布爾方法的問題,只有當它是假的。 –

+0

這似乎是一個很好的練習:)你需要了解我們的答案,以解決「isLucky」函數的結束條件。 .. – boly38

+0

和「sum」和「sumOfEvens」函數一樣。 – boly38

0

你試圖存儲10個號碼長度的數組9.

使用int[] userArray = new int[10];

相關問題