2016-09-09 142 views
0

我正在爲我的課程開發一個while循環示例。該循環將簡單地通過並使用人名和他們的號碼創建電話列表。這是我到目前爲止,但是當我運行它會顯示第一個字符串,然後出現超出界限的異常。我是一般的Java和編程新手,只是尋求一些建議,並幫助我在哪裏可以做得更好。謝謝你的時間。while循環「超出範圍例外」

public class WhileLoop { 

    public static void main(String[] args){ 

     String friends [][] = new String [10][2]; 

     friends [0][0] = "Angel"; 
     friends [0][1] = "555-555-5555"; 
     friends [1][0] = "Brandon"; 
     friends [1][1] = "444-444-4444"; 
     friends [2][0] = "Christina"; 
     friends [2][1] = "111-111-1111"; 
     friends [3][0] = "Donte"; 
     friends [3][1] = "222-222-2222"; 
     friends [4][0] = "Ashley"; 
     friends [4][1] = "333-333-3333"; 
     friends [5][0] = "Tommy"; 
     friends [5][1] = "777-777-7777"; 

     int totalElements = friends.length; 
     int i=0; 

     for (i=0; i<totalElements; i++){ 
      System.out.println("Phone Listing for: " + friends[i][i]); 
     } 
    } 
} 

回答

1

你去通過數組是[10][2]和你循環你做[i][i]其中i比你的數組最大的指數越大。爲了解決這個問題,你可以通過兩個陣列正確地這樣循環:

for (i = 0; i < yourArray.length; i++){ 
    for (int j = 0 ; j < yourArray[i].length; j++) 
    { 
     System.out.println("Phone Listing for: " + friends[i][j]); 
    } 
} 
0

你正在做的:

for (i=0; i<totalElements; i++){ 
     System.out.println("Phone Listing for: " + friends[i][i]); 
} 

這裏i將上升到10.這意味着它也將嘗試打印friends[i][2], friends[i][3], friends[i][4], ... friends[i][9]等,您只聲明friends[10][2]。這導致數組超出了界限的異常。

它應該是:

for (i = 0; i < friends.length; i++) { 
    for (j = 0; j < friends[i].length; j++) { 
     if(friends[i][j]!=null) // in case, you don't want to print unassigned elements 
      System.out.println("Phone Listing for: " + friends[i][j]); 
    } 
}