2016-04-08 2 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 случаев) В этом случае б должна быть меньше, чем 9 в ваш цикл.

Таким образом, вы могли бы заменить этот код:

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

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

, когда я исправляю проблемы, я получаю следующее сообщение об ошибке: Исключение в потоке «main» 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];

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