为什么我在交付之后不会得到20分钟如果我致电Test(String pStr)
,我会致getMatInt()
的“黑曜石”?
在所有字符串声明之后,还尝试了toString()
,也声明了例如“黑曜石”为new String
a。什么都行不通。
getBonus正在返回0而不是20/30 / .... 我已经尝试过“黑曜石”和“黑曜石”,两者都不适合我...
public class test
{
private String str;
private int matInt;
private int bonus;
private int magic;
public test(int pMagic, String pStr)
{
int magic = pMagic;
str = pStr;
}
private void materialEquals()
{
if(str.equals("Obsidian"))
{
matInt = 20;
}
.....
}
private void calcBonus()
{
materialEquals();
bonus = magic * matInt;
}
public int getBonus()
{
calcBonus();
return bonus;
}
}
答案 0 :(得分:1)
尝试:
public int getMatInt()
{
materialEquals();
return matInt;
}
在您的构造函数中没有理由这样做:str = new String(pStr);
,只需使用str = pStr
。
事实上,您可能最好在构造函数中设置matInt
:
public test(String pStr)
{
str = pStr;
materialEquals();
}
根据您拥有的材料数量,您可能需要考虑使用枚举。
编辑后确定:
public int getBonus()
{
calcBonus(); //bonus won't be calculated otherwise
return bonus;
}
进一步编辑后:
您的构造函数错误,您没有初始化int magic
。请尝试使用此构造函数。
public test(int pMagic, String pStr)
{
this.magic = pMagic; //int magic = pMagic was a new variable only in the constructor scope
this.str = pStr;
calcBonus();
}
此外,您还可以计算建筑上的奖金。
答案 1 :(得分:0)
您需要致电materialEquals()
,以便在20
比较时将matInt
分配给equals
,因为整数始终初始化为默认值0
申报时