2013-09-25 59 views
1

我對java很陌生。我必須在學校製作一個節目,但是當我嘗試運行這個時,我得到一個錯誤。 ArrayIndex .......:在139行0,這將是我把兩個*放在前面。我很難找到自己的錯誤。我一整天都在做這個。 謝謝! PS:我正在使用名爲easyIO的軟件包,以防你們中的一些人無法理解某些命令。ArrayIndexOutOfBoundsException:0

編輯:我終於找到它了,這是一個小問題。但是現在我無法讓該死的程序找到我在數組中搜索的內容。

void UtskriftArt() { 
    In Utskrift = new In(); 
    In søkefil = new In("Fugler.txt"); 
    int i= 0; 
    int teller = 0; 
    String[][] ArtArray = new String[teller][4]; 


    for(; i > 0 && !søkefil.endOfFile(); i++){ 
     søkefil.readLine(); 
     teller++; 
     if(søkefil.endOfFile()){ 
     søkefil.close(); 
     } 
    } 
    System.out.print("Hvilken art vil du søke opp og skriv ut obeservasjonsdata for? "); 
    String ArtSøke = Utskrift.inWord().trim(); 
    String Art = " "; 
    System.out.println("\t\t" + Art); 
    for(i = 0; i <= ArtArray.length; i++){ 
     **if(ArtSøke == ArtArray[i][0]){ 
     Art = ArtArray[i][0]; 
     System.out.print(ArtArray[i][1]); 
     System.out.print("\t" + ArtArray[i][2]); 
     System.out.println("\t" + ArtArray[i][3]); 
      } 
+0

2提示:你不能比較一個字符串==你需要做string.equals(otherString)。並且不要在變量名稱中使用特殊字符。 – Mirco

+0

我會留在程序中使用英文名稱。或者至少命名限於ASCII集...相信我。國家人物只是一個需要維護的痛苦。而我不是英語...... – ppeterka

+0

這樣開始的循環:'for(; i> 0 &&!søkefil.endOfFile(); i ++)'永遠不會執行。第二部分說,只要'i'大於0(並且我們還沒有到達文件末尾),就繼續執行循環。然而,'i'從0開始,所以條件立即失敗。 – ajb

回答

5

你的數組被聲明爲

int teller = 0; 
String[][] ArtArray = new String[teller][4]; 

其第一尺寸大小爲0。它不具有任何元件,所以不能與

在索引0處訪問一個元素如果你使用了正確的 for循環
if(ArtSøke == ArtArray[i][0]){ 
        ^i is 0 

這不會發生

for(i = 0; i < ArtArray.length; i++){ 

請注意,條件僅爲<,而不是<=。如果是<=,由於數組使用基於0的索引,因此總是會出界。

你應該申報要陣列的實際尺寸有

teller = 1; // 1, 2, 3, more? 

在一個側面,但嚴重的是,閱讀How do I compare strings in Java?

+0

我想要一個動態數字,因爲這是一個用戶將用來註冊觀察的程序。我解決了很多問題,但是我無法再從該文件的開始處開始再次捕捉所有單詞。 – user2816040

+0

@ user2816040我不能評論,因爲我不知道你的「In」類或你的實際問題。在確定問題後考慮詢問另一個問題。 –

0

當你有一個數組,第一個元素在數組中是通過索引0訪問的。這意味着具有1個元素的數組只能在訪問索引0時工作,所有其他索引值將超出範圍。

如果您有一個零元素的數組,那麼在索引0(或任何其他索引值)處無任何訪問。

正如Sotirios所述,new String[tellar][4]分配一個零元素數組,每個元素是一個由四個元素組成的數組。這是因爲int tellar = 0;由於該數組具有零元素,因此索引0超出範圍。

1
int teller = 0; 
String[][] ArtArray = new String[teller][4]; 

這導致了該問題(由索蒂里奧斯扎Delimanolis' answer很好的描述)。

你可以只second for-loop在這種情況下teller會比0更大的first for-loop遞增後解決之前通過初始化AryArray您的問題。

String[][] ArtArray = new String[teller][4]; 
for(i = 0; i < ArtArray.length; i++) // improvement here too 
相關問題