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