2017-01-18 4 views
1

Я пытаюсь передать объект, который находится в случае A, к случаю G, и я пытаюсь передать его методу addGameDetails(), который находится в поле HockeyPlayerПередача объекта в оператор switch, который должен быть передан методу в другом классе

Чтобы игрок в случае A, который я добавил, может получить подробную информацию о них.

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

Поддержание ссылки на последний игрок, созданный вами в 'A', как локальная переменная в' main', просто не забудьте проверить, не является ли 'lastPlayer' не' null', прежде чем вы попытаетесь получить от него информацию – MadProgrammer

ответ

1

Если вы хотите addGameDetails для любого HockeyPlayer, что вы хотите, вы можете попросить playerNumber так:

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

} 

или если вы хотите передать только последние добавленные вы можете просто сохранить ссылку:

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

}