2012-05-17 34 views
6

Estoy comenzando una unidad en Arrays y me dieron un código de ejemplo para buscar en este muy básico programa introductorio para Arrays. Esencialmente, todo lo que tengo que hacer es hacer dos arreglos que pidan la temperatura para ese día de la semana. Después de recopilar la información, simplemente la escupirá en una cadena como esta.Java Arrays Index fuera de los límites

La temperatura fue el lunes 16 grados

La temperatura del martes fue de 18 grados

... etc

Por lo que entendí desde el código de ejemplo que he recibido yo estoy haciendo todo correctamente . Pero cuando trato de ejecutar el programa (en Netbeans) obtengo este error.

"Excepción en hilo "" java.lang.ArrayIndexOutOfBoundsException: 7 en temperatures.Temperatures.main (Temperatures.java:27) Java Resultado: 1" principal

Aquí está el código :

public static void main(String[] args)throws IOException { 
     // TODO code application logic here 
     BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); 
     String temp[]= new String[7]; 
     String day[]= new String[7]; 
     day[1]=("Monday"); 
     day[2]=("Tuesday"); 
     day[3]=("Wednesday"); 
     day[4]=("Thursday"); 
     day[5]=("Friday"); 
     day[6]=("Saturday"); 
     day[7]=("Sunday"); 
     for (int i=0; i <7; i++){ 
      System.out.println("Please enter the temperature for" + day[i]); 
      temp[i]=br.readLine(); 
     } 
     for (int i=0; i <7; i++){ 
     System.out.println("The high temperature on " + day[i]+ " was "+ temp[i]); 
     } 
    } 
} 

Respuesta

6

Arrays begin at zero (< - ese es un enlace a un artículo que explica por qué). Por lo tanto la asignación de su primer valor como day[1]=("Monday"); es el problema, debe ser day[0]=("Monday"); Espero que ayude

+0

Ahh De acuerdo, tenía la sensación de que sería algo así como un error lógico menor. Volví a ejecutar el programa, reemplazando los números de la matriz y funcionó. ¡Gracias! – Dave555

+0

Bienvenido a Stack Overflow :) ¡Me alegro de que lo haya descubierto! Acepte la respuesta que considera que respondió su pregunta de la mejor manera (haga clic en la pequeña marca de verificación debajo de las flechas de votación) para que los futuros con preguntas similares sabrán qué es lo que resolvió su problema. – kentcdodds

4

Arrays en Java comienzan en la posición 0, no la posición 1. por lo que si se inicializa a un tamaño de 7, el lunes es 0 y el domingo es 6. no existe un índice 7 disponible.

1

El arrancador matrices en 0,

prueba este

day[0]=("Monday"); 
    day[1]=("Tuesday"); 
    day[2]=("Wednesday"); 
    day[3]=("Thursday"); 
    day[4]=("Friday"); 
    day[5]=("Saturday"); 
    day[6]=("Sunday"); 

y en caso de que cambie este bucle

for(int i=0; i < 7; i++){ 
     System.out.println("Please enter the temperature for" + day[i]); 
     temp[i]=br.readLine(); 
    } 

para este

for(int i=0; i < day.length(); i++){ 
     System.out.println("Please enter the temperature for" + day[i]); 
     temp[i]=br.readLine(); 
    } 

Espero que lo ayuden.

+1

Cuidado, esto fue etiquetado con la tarea. No queremos darle a alguien la respuesta explícitamente, solo señalarlos en la dirección correcta. – kentcdodds

0

Esto se debe a que su matriz comienza desde 1, termina desde 7. Si la longitud de su matriz es 7, el último índice debe ser uno menos que la longitud de la matriz. En su caso, la matriz ve que la ha declarado para 7 elementos, pero ha insertado 8 posiciones. Entonces, inicie la matriz desde 0, termínela desde 6

0

Si una matriz es 'N', entonces los límites de esa matriz son 0 y "N-1". En su caso, los límites de la matriz son 0 y 6. Pero está intentando escribir el valor en la matriz [7] que no existe.

Cuestiones relacionadas