2017-06-04 84 views
0

BowlingTeamDemo2類中的最後一個for循環在第一次迭代中將x增量爲4的值。 Stumped ...該程序將自動填寫名稱而不是使用掃描儀,僅用於測試目的。在最後一個循環的內循環之前和之後添加了變量x的打印輸出以測試x的值。在內循環之前,值爲0,內循環啓動後,值爲4。 該循環正確輸出組的名稱,但在嘗試訪問BowlingTeam類的getMember()方法時失敗。這是一個例子,而不是一個練習。Java變量在for循環開始時增加越界

我得到的錯誤是這樣的:在線程

異常 「主要」 java.lang.ArrayIndexOutOfBoundsException:4 在BowlingTeam.getMember(BowlingTeam.java:21)在 BowlingTeamDemo2.main(BowlingTeamDemo2。 Java的:41)

public class BowlingTeam{ 

    private String teamName; 
    private String[] members = new String[4]; 

    public void setTeamName(String team){ 
     teamName = team; 
    } 
    public String getTeamName(){ 
     return teamName; 
    } 

    public void setMember(int number, String name){ 
     members[number] = name; 
    } 
    public String getMember(int number){ 
     // We have an issue here!!!!!! 
     return members[number]; 
    } 
} 

import java.util.*; 
public class BowlingTeamDemo2{ 

    public static void main(String[] args){ 
     String name; 
     final int NUM_TEAMS = 4; 
     final int NUM_TEAM_MEMBERS = 4; 
     int x; 
     int y; 

     BowlingTeam[] teams = new BowlingTeam[NUM_TEAMS]; 

     Scanner input = new Scanner(System.in); 

     for(y = 0; y < NUM_TEAMS; ++y){ 
      teams[y] = new BowlingTeam(); 
      System.out.println("Enter team name >> "); 
      name = "Teams"; 
      teams[y].setTeamName(name); 

      for(x = 0; x < NUM_TEAM_MEMBERS; ++x){ 
       System.out.println("Enter team members name >> "); 
       name = "CoolName"; 
       teams[y].setMember(x, name); 
      } 
     } 

     x = 0; 
     y = 0; 

     for(y = 0; y < NUM_TEAMS; ++y){ 
      System.out.println(x); 

      for(x = 0; x < NUM_TEAM_MEMBERS; ++x);{ 
       System.out.println(x); 
       System.out.println("\nMembers of team " + 
           teams[y].getTeamName()); 
       // We have an issue here!!!!!! 
       System.out.print(teams[y].getMember(x) + " "); 
      } 
     } 

     System.out.println(); 
    } 
} 
+4

Typo。 'for(x = 0; x

+0

廢話,謝謝。 –

+3

@JustaGuy每個人都會遇到這種情況,別擔心!順便說一下,Stack Overflow上的「Holy crap」按鈕是[delete] :-) – dasblinkenlight

回答

0

假設你的循環有錯誤的語法,它應該是這樣的。

for(y = 0; y < NUM_TEAMS; ++y){ 
     System.out.println(x); 

     for(x = 0; x < NUM_TEAM_MEMBERS; ++x){ 
      System.out.println(x); 
      System.out.println("\nMembers of team " + 
          teams[y].getTeamName()); 
      // We have an issue here!!!!!! 
      System.out.print(teams[y].getMember(x) + " "); 
     } 
    }