使用switch语句设置对象变量

时间:2018-05-01 03:18:19

标签: java

目前正在编写我的决赛,这是一款基于文本的冒险游戏。我无法启动角色选择。我的目的是创建myCharacter的对象,然后用我的角色类中的方法填充变量。我想使用while循环来避免在设置角色之前初始化游戏并且h1将角色放在第一个房间中以开始游戏。相反,变量永远不会设置,它只是一个永久的循环。

//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并阅读了很多书。

2 个答案:

答案 0 :(得分:3)

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

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;
    ...
}

答案 1 :(得分:0)

您的变量名称是向后的。

例如,

应该是this.Name = N;。使用this将帮助您理解/识别您实际执行的操作。设置"此类的字段为值"。

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

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