2012-05-17 36 views
6

Sto appena iniziando un'unità in Array e mi è stato fornito un codice di esempio per cercare questo programma introduttivo di base per gli array. In sostanza, tutto ciò che devo fare è creare due array che richiedono la temperatura per quel giorno della settimana. Dopo aver raccolto le informazioni, le sputerà semplicemente in una stringa come questa.Java Array Index out of Bounds

La temperatura il Lunedi era 16 gradi

La temperatura il Martedì era 18 gradi

... ecc

Da quello che ho capito dal codice di esempio che ho ricevuto io sto facendo tutto correttamente . Ma quando provo a eseguire il programma (in Netbeans) ottengo questo errore.

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 a temperatures.Temperatures.main (Temperatures.java:27) Java Risultato: 1"

Ecco il codice :

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]); 
     } 
    } 
} 

risposta

6

Arrays begin at zero (< - questo è un collegamento a un articolo che spiega perché). Quindi assegnare il vostro primo valore come day[1]=("Monday"); è la questione, dovrebbe essere day[0]=("Monday"); Speranza che aiuta

+0

Ahh Ok, ho avuto la sensazione che sarebbe stato un errore logico minore. Ho rieseguito il programma, sostituendo i numeri di array e ha funzionato. Grazie! – Dave555

+0

Benvenuti in Stack Overflow :) Sono contento che tu l'abbia capito! Accetta la risposta che ritieni abbia risposto alla tua domanda nel modo migliore (fai clic sul piccolo segno di spunta sotto le frecce di votazione) in modo che i futuri venuti con domande simili sappiano quale soluzione ha risolto il problema. – kentcdodds

4

array in Java partono da posizione 0, non posizione 1. Quindi, se si inizializza a una dimensione di 7, Lunedi è 0 e Domenica è 6. non v'è alcun indice di 7 disponibili.

1

Lo starter array a 0,

provare questo

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

e si dovrebbe cambiare questo ciclo

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

per questo

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

Spero di aiutarti.

+1

Attenzione, questo è stato taggato con i compiti. Non vogliamo dare a qualcuno la risposta in modo esplicito, basta indirizzarli nella giusta direzione. – kentcdodds

0

Questo perché l'array inizia da 1, termina da 7. Se la lunghezza dell'array è 7, l'ultimo indice deve essere inferiore alla lunghezza dell'array. Nel tuo caso, la matrice vede che l'hai dichiarata per 7 elementi, ma ha inserito 8 posizioni. Quindi, avviare la matrice da 0, terminarla da 6

0

Se una matrice è "N", i limiti di tale matrice sono 0 e "N-1". Nel tuo caso i confini dell'array sono 0 e 6. Ma stai cercando di scrivere valore in array [7] che non esiste.