2012-05-17 14 views
6

Ich habe gerade eine Unit in Arrays gestartet und mir wurde ein Beispiel Code gegeben, um dieses sehr grundlegende Einführungsprogramm für Arrays zu betrachten. Im Wesentlichen muss ich nur zwei Arrays erstellen, die nach der Temperatur für diesen Wochentag fragen. Nach dem Sammeln der Informationen wird es einfach in einer solchen Zeichenfolge wieder herausgespuckt.Java Arrays Index out of Bounds

Die Temperatur am Montag war 16 Grad

Die Temperatur war am Dienstag 18 Grad

... etc.

Von dem, was ich aus dem Beispielcode habe ich verstanden, ich habe alles richtig empfangen tue . Aber wenn ich versuche, das Programm (in Netbeans) zu starten, bekomme ich diesen Fehler.

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

Hier ist der Code :

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

Antwort

6

Arrays begin at zero (< - das ist ein Link zu einem Artikel, der warum erklärt). So Ihre erste Wert als day[1]=("Monday"); Zuordnung ist die Frage, sollte es day[0]=("Monday"); Hoffnung sein, das

in 0

+0

Ahh Okay, ich hatte das Gefühl, es wäre so etwas wie ein kleiner logischer Fehler. Ich habe das Programm neu gestartet, die Array-Nummern ersetzt und es hat funktioniert. Vielen Dank! – Dave555

+0

Willkommen bei Stack Overflow :) Ich bin froh, dass du es herausgefunden hast! Bitte akzeptieren Sie die Antwort, auf die Sie Ihre Frage am besten beantwortet haben (klicken Sie auf das kleine Häkchen unter den Abstimmpfeilen), damit zukünftige Teilnehmer mit ähnlichen Fragen wissen, was Ihr Problem gelöst hat. – kentcdodds

4

Arrays in Java beginnen an Position 0, positionieren Sie nicht 1. Also, wenn Sie es auf eine Größe von 7 initialisieren, Montag 0 und Sonntag 6. es gibt keinen Index 7 zur Verfügung steht.

1

Die Arrays Starter hilft versuchen, diese

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

und sollten Sie diese Schleife

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

für diese

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

Ich hoffe dir zu helfen.

+1

Achtung, dies wurde mit Hausaufgaben getaggt. Wir wollen niemandem die Antwort explizit geben, sondern nur in die richtige Richtung zeigen. – kentcdodds

0

Das liegt daran, dass Ihr Array bei 1 beginnt und bei 7 endet. Wenn Ihre Array-Länge 7 ist, sollte der letzte Index um eins kleiner als die Array-Länge sein. In Ihrem Fall sieht Array, dass Sie es für 7 Elemente deklariert haben, aber 8 Positionen eingefügt haben. Also, starte Array von 0, beende es von 6

0

Wenn ein Array 'N' ist, dann sind die Grenzen dieses Arrays 0 und "N-1". In Ihrem Fall sind die Array-Grenzen 0 und 6. Aber Sie versuchen, Wert in Array [7] schreiben, die nicht existiert.

Verwandte Themen