2012-10-10 85 views
-2

當我嘗試使用此方法時,我在標題中看到消息,但找不到原因。任何人都可以幫助我?線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:10

謝謝!

void companyInfo() { 
    int tel = 0; 
    System.out.print("Name of company: "); 
    String tmpCompany = sc.next(); 
    for (int i = 0; i < tel; i++){ 
     if (tmpCompany.equals(null)){ 
     } 
    } 
    for (int i = 0; i < 10; i++) { 
     int count = 0; 
     for (int j = 0; j < field.length; j++){ 
      for (int k = 0; k < field[k].length; k++){ 
       if (tmpCompany != (null) && field[i][j] != 0 && tmpCompany.equals(felt[i][j])){ 
        count++; 
       } 
      } 
     } 
     if (tmpCompany != null && count > 0) { 
      System.out.print("The company " + tmpCompany + " owns " + count + " field(s)."); 
     } 
    } 
}​ 
+1

你可以張貼堆棧跟蹤?數組在哪裏聲明?給我們看一看。 –

+0

「tel」變量和第一個for循環的重點是什麼?循環從不執行其主體。 – ReyCharles

+2

這個網站沒有每秒鐘得到50個這樣的帖子的原因是因爲你可以通過程序(使用IDE)輕鬆查看問題的確切位置。 – keyser

回答

1

我不能完全肯定,什麼在你的陣列,因爲我看到這樣一行:

for (int k = 0; k < field[k].length; k++) 

場[K]。但你的錯誤,因爲你嘗試在一個數組,它是一個長度小於10

0

下找到指數10本:

for (int k = 0; k < field[k].length; k++) 

幾乎應該是:

for (int k = 0; k < field[j].length; k++) 

雖然你'然後在循環體內使用field[i][j],這似乎不太可能是你想要的。我注意到你在迴路中根本不使用k。目前還不清楚爲什麼當你只有一個二維數組時,你認爲你需要三個循環級別:。

基本上,你應該重新訪問你的循環界限和每個訪問field,看看它。


是的,我知道這是真的只是一個數組的數組。重點是它不是數組數組。

+0

聖潔的廢話,我編輯了Jon Skeet回答:-) – ReyCharles

0

在你if條件下,應該不會是field[j][k]如下:

if (tmpCompany != (null) && field[j][k] != 0 && tmpCompany.equals(field[j][k])){ 
相關問題