2017-06-04 2 views
0

La dernière boucle for de la classe BowlingTeamDemo2 incrémente x à la valeur 4 dans la première itération. Stumped ... Le programme remplira automatiquement les noms au lieu d'utiliser le scanner, juste à des fins de test. J'ai ajouté une impression de la variable x avant et après la boucle interne dans la dernière boucle pour tester la valeur de x. Avant la boucle interne, la valeur est 0, après le début de la boucle interne, la valeur est 4. La boucle imprime correctement le nom de l'équipe, mais échoue lors de la tentative d'accès à la méthode getMember() à partir de la classe BowlingTeam. C'était un exemple, pas un exercice.La variable Java est incrémentée hors limites au début de la boucle for

L'erreur que je reçois est la suivante:

Exception dans le thread "principal" 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. 'pour (x = 0; x

+0

Merde, merci. –

+3

@JustaGuy Cela arrive à tout le monde, pas de soucis! En passant, le bouton "Holy merde" sur Stack Overflow est [delete] :-) – dasblinkenlight

Répondre

0

Supposons que votre boucle for a mauvaise syntaxe et il devrait être comme ça.

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) + " "); 
     } 
    }