我正在尝试用java编写这个程序。
我可以从构造函数中读取字符串并使用分隔符分隔字符串。但是,每次,我都尝试promote()
为这些值调用方法,但值保持不变。布尔方法promote()
显示true
,但级别并没有增加。
例如:如果来自构造函数的字符串是 : "Harry#wizard#broom"
,那么:
name <- "Harry"
level <- "wizard"
supplies <- "broom"
name
,level
并且broom
都是私有数据实例(我不知道我应该使用数据实例还是局部变量)。
但是,每当我调用harry.promote()
它返回true
但级别保持不变时,它不会得到提升。in 的初始值level
似乎覆盖了它。
我写了以下代码:
import java.util.Scanner;
import java.io.*;
public class Magician
{
private String name;
private String level;
private String supplies;
private double health;
private int galleons;
public Magician(String phrase) //phrase will be sth like this: Harry#wizard#broom#staff
{
health = 4000;
galleons = 200;
Scanner firstScan = new Scanner(details);
firstScan.useDelimiter("#");
name = firstScan.next();
level = firstScan.next();
if (firstScan.hasNext())
{
supplies = firstScan.next();
while (firstScan.hasNext())
{
supplies = supplies + " " + firstScan.next();
}
}
else
{
supplies ="";
}
}
public String getName()
{
return name;
}
public String getLevel()
{
return level;
}
public int getGalleons()
{
return galleons;
}
public double getHealth()
{
return health;
}
public String getSupplies()
{
return supplies;
}
//Mutators
public void setName(String nameUpdate)
{
name = nameUpdate;
}
public void setLevel(String levelUpdate)
{
level =levelUpdate;
}
public void setGalleons(int galleonsUpdate)
{
galleons = galleonsUpdate;
}
public void setHealth(double healthUpdate)
{
health = healthUpdate;
}
public void setSupplies(String suppliesUpdate)
{
supplies = suppliesUpdate;
}
// boolean promote, promotes a level up
public boolean promote()
{
if (level == "apprentice")
{
level = "wizard";
galleons +=100;
return true;
}
else if (level == "wizard")
{
level = "mage";
galleons +=100;
return true;
}
else if (level == "mage")
{
level = "sorcerer";
galleons +=100;
return true;
}
else if (level == "sorcerer")
{
level = "shaman";
galleons +=100;
return true;
}
else if (level == "shaman")
{
return false;
}
return true;
}
public boolean downgradeLevel()
{
if (level == "shaman")
{
level = "sorcerer";
return true;
}
else if (level == "sorcerer")
{
level = "mage";
return true;
}
else if (level == "mage")
{
level = "wizard";
return true;
}
else if (level == "wizard")
{
level = "apprentice";
return true;
}
else if (level == "apprentice")
{
return false;
}
if(galleons>= 100)
{
galleons -=100;
}
else
{
galleons =0;
}
return true;
}