2014-11-09 3 views
0

Я продолжаю получать сообщение об ошибке, и я понятия не имею, как это исправить.
Ошибки я получаю:Ошибка массива for-loop

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 
    at Ch7Ex1NumberAboveAverage_TimmyHernandez.main(Ch7Ex1NumberAboveAverage_TimmyHernandez.java:35) 

Мой код:

public class Ch7Ex1NumberAboveAverage_TimmyHernandez { 
    public static void main (String [] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("How many temperatures do you have?"); 
     int entry = keyboard.nextInt(); 
     double[] temperature = new double[entry]; 

     System.out.println("Please enter the " + entry + " temperatures."); 

     int index = 0; 
     double total = 0; 
     for (index = 0; index < temperature.length; index++); 
     { 
      temperature[index] = keyboard.nextDouble(); 
      total = total + temperature[index]; 
     } 

     double average = (total/temperature.length); 
     System.out.println("The average temperature is" + average + "."); 

     System.out.println("The following temperatures are higher than the average temperature:"); 
     for (index = 0; index < temperature.length; index++); 
     { 
      if (temperature[index] > average); 
      { 
       System.out.println("Temperature " + (index + 1) + ":" + temperature[index]); 
      } 
     } 
    } 
} 

Спасибо за любую помощь.

+0

Пожалуйста, работайте над своим названием, я напугался на секунду. – Artemkller545

+0

Спасибо за помощь! – Timmy

ответ

2

В коде у вас есть цикл for (index = 0; index < temperature.length; index++);

есть точка с запятой в конце. Из-за этого, когда концы цикла заканчиваются index, значение равно temperature.length, а затем на следующей строке вы пытаетесь получить доступ к элементу за пределами размера массива. Это обычная ошибка/опечатки, которые люди делают и трудно найти в кратком пошаговом руководстве.

Изменить его

for (index = 0; index < temperature.length; index++)

ArrayIndexOutOfBoundsException всегда дают вам значение индекса, где ваша программа пытается получить доступ к массиву. Изучая номер строки и возможное значение индекса, этот вид исключения можно быстро исправить.

+0

Ничего себе я потратил слишком много времени, пытаясь понять, что я сделал не так, ха-ха. Благодаря! – Timmy

+0

Да, бывает. Продолжайте работать над стандартами кодирования и соглашениями об именах для класса, объектов, переменных и т. Д. –