2017-06-04 39 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) + " "); 
     } 
    }