2012-05-17 142 views
6

的我剛開始一單元陣列中,我得到了一些示例代碼來尋找斷爲數組這個非常基本的入門程序。基本上我所要做的就是製作兩個陣列,用於詢問一週當天的溫度。收集信息後,它會簡單地將它吐出像這樣的字符串。Java中的數組索引越界

週一的溫度是16度

週二的溫度是18度

...等

從我從我收到的示例代碼,我做正確瞭解的一切。但是當試圖運行程序(在Netbeans中)時,我得到這個錯誤。

「異常在線程 」主「 java.lang.ArrayIndexOutOfBoundsException:7 在temperatures.Temperatures.main(Temperatures.java:27) Java結果:1」

下面是代碼:

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

回答

6

Arrays begin at zero(< - 這是給這就解釋了爲什麼在文章的鏈接)。因此,作爲day[1]=("Monday");分配你的第一個值的問題,它應該是day[0]=("Monday");希望幫助

+0

啊好吧,我有一種感覺,這將是一個小的邏輯錯誤。我重新運行該程序,替換數組數字並且工作。謝謝! – Dave555

+0

歡迎來到堆棧溢出:)我很高興你想通了!請接受您以最佳方式回答您的問題的答案(點擊投票箭頭下面的小勾號),以便將來有相似問題的參加者將知道什麼解決了您的問題。 – kentcdodds

4

陣列在Java中開始在位置0,沒有位置1。所以,如果你把它初始化爲一個大小爲7,星期一是0和週日爲6沒有可用的指標7。

1

的陣列起動器0,

試試這個

day[0]=("Monday"); 
    day[1]=("Tuesday"); 
    day[2]=("Wednesday"); 
    day[3]=("Thursday"); 
    day[4]=("Friday"); 
    day[5]=("Saturday"); 
    day[6]=("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 < day.length(); i++){ 
     System.out.println("Please enter the temperature for" + day[i]); 
     temp[i]=br.readLine(); 
    } 

我希望能幫到你。

+1

小心,這被標記爲功課。我們不想明確地給某人答案,只要指出他們在正確的方向。 – kentcdodds

0

這是因爲你的陣列從1開始,從端部7。如果您的陣列長度爲7,最後指數應大於tyhe陣列長度少一個。在你的情況下,數組看到你已經聲明瞭7個元素,但插入了8個位置。所以,從0開始陣列,從6

0

結束它如果數組是是「N」,那麼該陣列的邊界是0和「N-1」。 在你的情況下,數組邊界是0和6.但是你正在將數值寫入數組[7],這是不存在的。