java - 如何将对象从一个 case 语句传递到另一个 case 语句

标签 java arrays object switch-statement instance

我试图将“玩家”对象从情况“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/

相关文章:

Java 与 MySql 数据库的连接问题

java - 解析字符串以忽略空格时出错,计算器类

javascript - jquery、ajax、从博客 json feed 创建标签数组

javascript - 如何用js递增 "id"对象?

php - 从名称中带有符号的对象获取内容

java - 处理反编译代码中的标签

java - 无法将 Firebase 数据库中存储的图像(静态)提取到我的应用程序中

php mysql数组到字符串转换错误

javascript - 在javascript中将数组转换为嵌套对象

c++ - 如何跟踪 C++ 对象