Java 使用switch语句设置对象变量

Java 使用switch语句设置对象变量,java,Java,目前正在编写我的最终版本,这是一个基于文本的冒险游戏。我在启动角色选择时遇到问题。我的意图是创建myCharacter的对象,然后用character类中的方法填充变量。我想使用while循环来避免在设置角色之前初始化游戏,并将角色放在第一个房间开始游戏。相反,变量从未设置,它只是一个永久循环 //Select Player while (myCharacter.HP == 0) { input = JOptionPane.showInputDialog("Select

目前正在编写我的最终版本,这是一个基于文本的冒险游戏。我在启动角色选择时遇到问题。我的意图是创建myCharacter的对象,然后用character类中的方法填充变量。我想使用while循环来避免在设置角色之前初始化游戏,并将角色放在第一个房间开始游戏。相反,变量从未设置,它只是一个永久循环

//Select Player
    while (myCharacter.HP == 0)
    {
    input = JOptionPane.showInputDialog("Select your Character\nDerek\nEmily\nMichael");
    switch (input)
    {
        case "Derek" :
        myCharacter.SetVariables("Derek", "", 100, 50, false,
        false, false, false, false, 0, h1);
        break;
        case "Emily" :

        myCharacter.SetVariables("Emily", "", 150, 20, false,
        false, false, false, false, 0, h1);
        break;

        case "Michael" :

        myCharacter.SetVariables("Michael", "", 75, 75, false,
        false, false, false, false, 0, h1);
        break;
        default:
            JOptionPane.showMessageDialog(null,"Please enter a given name");
    }
    }
这是我的角色类,它有一个设置变量的方法

class Character
{
String Name;
String Description;
int HP;
int attack;

//inventory
boolean mainKey = false;
boolean H1toH2 = false;
boolean knife = false;
boolean gasMask = false;
boolean gasMaskUse = false;
int bandage = 0;
Room currentRoom;

public void SetVariables(String N, String D, int H, int A, boolean MK,
        boolean DK, boolean K, boolean GM, boolean GMU, int B, Room CR)
    {
    N = Name;
    D = Description;
    H = HP;
    A = attack;
    MK = mainKey;
    DK = H1toH2;
    K = knife;
    GM = gasMask;
    GMU = gasMaskUse;
    B = bandage;
    CR = currentRoom;
    }
}

我在这节介绍课上没有最好的老师。我们中的很多人都在努力解决这个问题,所以我转向了youtube,阅读了很多这本书。

您应该将参数指定给类字段,而不是相反:

public void SetVariables(String N, String D, int H, int A, boolean MK,
        boolean DK, boolean K, boolean GM, boolean GMU, int B, Room CR)
{
    Name = N;
    Description = D;
    ...
}

应将参数指定给类字段,而不是相反:

public void SetVariables(String N, String D, int H, int A, boolean MK,
        boolean DK, boolean K, boolean GM, boolean GMU, int B, Room CR)
{
    Name = N;
    Description = D;
    ...
}

您的变量名是反向的

应该是
this.Name=N。使用
将帮助您了解/识别您实际在做什么。将“此类字段设置为值”

此外,Java变量/方法命名约定规定,除了类或接口之外,不应使用起始大写字母


它还鼓励对每个值使用单独的setter方法,而不是让其他人读取并弄清楚您正在设置哪些未命名的参数

应该是
this.Name=N。使用
将帮助您了解/识别您实际在做什么。将“此类字段设置为值”

此外,Java变量/方法命名约定规定,除了类或接口之外,不应使用起始大写字母

它还鼓励对每个值使用单独的setter方法,而不是让其他人读取并找出您正在设置的未命名参数