我试图用Java编写此程序。
我可以从构造函数中读取字符串,并使用定界符将字符串分开。但是,每次尝试调用诸如promote()
这些值之类的方法时,该值都保持不变。布尔方法promote()
显示true
,但级别不会增加。
例如:如果构造函数的字符串是:"Harry#wizard#broom"
,则:
name <- "Harry"
level <- "wizard"
supplies <- "broom"
name
,level
以及broom
所有私有数据实例(我不知道是否应该使用数据实例或局部变量)。
但是,每当我调用harry.promote()
它返回true
但级别保持不变时,它都不会升级。中的初始值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;
}
试试这个:-
// boolean promote, promotes a level up
public boolean promote()
{
if (level.equals("apprentice"))
{
level = "wizard";
galleons +=100;
return true;
}
else if (level.equals("wizard"))
{
level = "mage";
galleons +=100;
return true;
}
else if (level.equals("mage"))
{
level = "sorcerer";
galleons +=100;
return true;
}
else if (level.equals("sorcerer"))
{
level = "shaman";
galleons +=100;
return true;
}
else if (level.equals("shaman"))
{
return false;
}
return true;
}
如果您需要从此访问变量,main()
则需要将变量声明为静态。
public static void main(String str[]){
Magician magg=new Magician("Harry#wizard#broom#staff");
System.out.println("Level before promote is ::"+level);
magg.promote();
System.out.println("Level after promote is::"+level);
}
输出 :-
Level before promote is ::wizard
Level after promote is::mage
现在正在工作。
希望对您有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句