我试图将“玩家”对象从情况“A”转移到情况“G”,但我当然不能这样做,因为该对象是在情况 A 中创建的,我必须将其保留在那里。如何在保持相同实例的同时将其移动到那里? java初学者。我希望能够通过按“G”来编辑数组中的玩家
package hockeyplayer;
import java.util.Scanner;
public class HockeyMain {
private static String choice;
private static HockeyPlayer[] players = new HockeyPlayer[12];
private static final String MENU = "Hockey Tracker\n"+
"A-Add Player\n"+
"G-Add game details\n"+
"S-Show players\n"+
"X-Quit\n";
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
do{
System.out.println(MENU);
choice = input.nextLine();
switch(choice){
case "A":
HockeyPlayer player = new HockeyPlayer();
players[player.getPlayerNumber()-1] = player;
break;
case "G":
break;
case "S":
break;
case "X":
}
}while(!choice.equals("X"));
}
}
package hockeyplayer;
import java.util.Scanner;
public class HockeyPlayer {
private String[] opponent = new String[10];
private int[] goalsScored = new int[10];
private int[] gameNumber = new int[10];
private String name;
private int playerNumber;
public HockeyPlayer() {
Scanner input = new Scanner(System.in);
System.out.println("What is the name of the player?");
name = input.nextLine();
System.out.println("What is the player's number?");
playerNumber = input.nextInt();
input.nextLine();
}
public String[] getOpponent() {
return opponent;
}
public void setOpponent(String[] opponent) {
this.opponent = opponent;
}
public int[] getGoalsScored() {
return goalsScored;
}
public void setGoalsScored(int[] goalsScored) {
this.goalsScored = goalsScored;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPlayerNumber() {
return playerNumber;
}
public void setPlayerNumber(int playerNumber) {
this.playerNumber = playerNumber;
}
public void addGameDetails(){
Scanner input = new Scanner(System.in);
System.out.println("What game number was it?");
gameNumber[0] = input.nextInt();
input.nextLine();
System.out.println("Who were the opponents?");
opponent[0] = input.nextLine();
System.out.println("How many goals did the player score?");
goalsScored[0] = input.nextInt();
}
}
最佳答案
在 switch 语句
之外声明一个 HockeyPlayer
实例,如下所示:
HockeyPlayer player = null;
do{
System.out.println(MENU);
choice = input.nextLine();
switch(choice){
case "A":
player = new HockeyPlayer();
players[player.getPlayerNumber()-1] = player;
break;
case "G":
player.addGameDetails(); //invoke the method here for case G
break;
case "S":
break;
case "X":
}
}while(!choice.equals("X"));
}
这个想法是,HockeyPlayer
对象应该可供所有 switch 语句
访问,因此您需要在可访问的地方声明它。
关于java - 如何将对象从一个 case 语句传递到另一个 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784617/