2017-06-04 3 views
0

Die letzte for-Schleife der Klasse BowlingTeamDemo2 erhöht innerhalb der ersten Iteration x auf den Wert 4. Stumped ... Das Programm füllt die Namen automatisch aus, anstatt den Scanner zu benutzen, nur zu Testzwecken. Ich habe einen Ausdruck der Variablen x vor und nach der inneren Schleife in der letzten for-Schleife hinzugefügt, um den Wert x zu testen. Vor der inneren Schleife ist der Wert 0, nach dem Start der inneren Schleife ist der Wert 4. Die Schleife gibt den Namen des Teams korrekt aus, schlägt jedoch fehl, wenn versucht wird, auf die getMember()-Methode von der BowlingTeam-Klasse zuzugreifen. Dies war ein Beispiel, keine Übung.Die Java-Variable wird zu Beginn der for-Schleife außerhalb der Grenzen inkrementiert.

Der Fehler I erhalten, ist dies:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 bei BowlingTeam.getMember (BowlingTeam.java:21) bei 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. 'für (x = 0; x

+0

Heiliger Mist, danke. –

+3

@JustaGuy Das passiert jedem, keine Sorge! By the way, der "Holy Mist" Button auf Stack Overflow ist [löschen] :-) – dasblinkenlight

Antwort

0

Ihre for-Schleife Angenommen falsche Syntax hat und es sollte so sein.

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