2017-01-18 3 views
1

Ich versuche, das Objekt, das in Fall A zu Fall ist G übergeben, und ich versuche, es an die Methode addGameDetails() übergeben zu bekommen ist in der HockeyPlayer KlasseÜbergabe eines Objekts an eine switch-Anweisung an eine Methode in einer anderen Klasse übergeben

So dass der Spieler im Fall A, die ich hinzugefügt habe Details über sie erhalten können.

package hockeyplayer; 

import java.util.Scanner; 

public class HockeyPlayer { 

    private final int[] goals = new int[10]; 
    private final String[] teamName = new String[10]; 
    private final int[] gameNumber = new int[10]; 
    private int[] game = new int[10]; 
    private static String name; 
    private static int playerNumber; 

    public HockeyPlayer() { 
     Scanner input = new Scanner(System.in); 
     int goalsScored = -1; 
     System.out.println("Enter the name of the player"); 
     name = input.nextLine(); 
     System.out.println("Enter the player number 1-12"); 
     playerNumber = input.nextInt(); 

    } 

    public int[] getGoals() { 
     return goals; 
    } 

    public String[] getTeamName() { 
     return teamName; 
    } 

    public int[] getGameNumber() { 
     return gameNumber; 
    } 

    public int[] getGame() { 
     return game; 
    } 

    public static String getName() { 
     return name; 
    } 

    public static int getPlayerNumber() { 
     return playerNumber; 
    } 

    public void setGame(int[] game) { 
     this.game = game; 
    } 

    public static void setName(String name) { 
     HockeyPlayer.name = name; 
    } 

    public static void setPlayerNumber(int playerNumber) { 
     HockeyPlayer.playerNumber = playerNumber; 
    } 



    public void addGameDetails() { 
     HockeyPlayer firstPlayer = new HockeyPlayer(); 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter the game number"); 
     gameNumber [0] = input.nextInt(); 
     System.out.println("What team was it against?"); 
     teamName[0] = input.nextLine(); 
     System.out.println("How many goals was scored by "+name+"?"); 
     goals[0] = input.nextInt(); 


    } 

    @Override 
    public String toString() { 
     String output = ""; 

     return output; 
    } 

} 

package hockeyplayer; 

import java.util.Scanner; 

public class HockeyPlayerMain { 

    private static HockeyPlayer[] player = new HockeyPlayer[12]; 

    private static final String MENU = "***Hockey Tracker***\n" 
      + "A- Add player details\n" 
      + "G- Add game details\n" 
      + "S- Show players \n" 
      + "X- Exit\n"; 

    public static void main(String[] args) { 
     String option = ""; 
     Scanner input = new Scanner(System.in); 

     do { 
      System.out.println(MENU); 
      option = input.nextLine(); 
      switch (option) { 
       case "A": 
        HockeyPlayer p = new HockeyPlayer(); 
        player[p.getPlayerNumber() - 1] = p; 

        break; 

       case "G": 

        break; 

       case "S": 

      } 

     } while (!option.equalsIgnoreCase("X")); 

    } 
} 
+0

Pflegen Sie einen Verweis auf die Letzter Spieler, den du in 'A' als lokale Variable in' main' erstellt hast, vergiss nicht vorher zu überprüfen, ob der 'lastPlayer' kein' null' ist, bevor du versuchst Informationen von ihm zu erhalten – MadProgrammer

Antwort

1

Wenn Sie addGameDetails für jede HockeyPlayer wollen, dass Sie möchten, dass Sie für playerNumber so fragen konnte:

public static void main(String[] args) { 
    String option = ""; 
    Scanner input = new Scanner(System.in); 

    do { 
     System.out.println(MENU); 
     option = input.nextLine(); 
     switch (option) { 
      case "A": 
       HockeyPlayer p = new HockeyPlayer(); 
       player[p.getPlayerNumber() - 1] = p; 

       break; 

      case "G": 
       int playerId = Integer.valueOf(input.nextLine()); 
       player[playerId-1].addGameDetails(); 
       break; 

      case "S": 

     } 

    } while (!option.equalsIgnoreCase("X")); 

} 

oder wenn Sie nur die letzte hinzugefügt geben wollen Sie können einfach Referenz speichern:

public static void main(String[] args) { 
    String option = ""; 
    Scanner input = new Scanner(System.in); 
    HockeyPlayer lastAdded = null; 

    do { 
     System.out.println(MENU); 
     option = input.nextLine(); 
     switch (option) { 
      case "A": 
       HockeyPlayer p = new HockeyPlayer(); 
       player[p.getPlayerNumber() - 1] = p; 
       lastAdded = p; 
       break; 

      case "G": 
       if (lastAdded != null) lastAdded.addGameDetails(); 
       break; 

      case "S": 

     } 

    } while (!option.equalsIgnoreCase("X")); 

} 
Verwandte Themen