如何将一个对象从一个 case 语句传递到另一个
How to pass an object from one case statement to another
我正在尝试从案例 "A" 到案例 "G" 获取 "player" 对象,但当然我不能这样做,因为该对象是在案例 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 statement
之外声明一个 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 statements
访问,所以你需要在它可以访问的地方声明它。
将 player
变量的声明移到 do-while
之外,仍然在 case "A"
中实例化:
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":
// you can use player here (assuming
break;
case "S":
break;
case "X":
}
} while(!choice.equals("X"));
我正在尝试从案例 "A" 到案例 "G" 获取 "player" 对象,但当然我不能这样做,因为该对象是在案例 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 statement
之外声明一个 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 statements
访问,所以你需要在它可以访问的地方声明它。
将 player
变量的声明移到 do-while
之外,仍然在 case "A"
中实例化:
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":
// you can use player here (assuming
break;
case "S":
break;
case "X":
}
} while(!choice.equals("X"));