package RPG;
import java.util.Random;
import java.util.Scanner;
public class Beginnings
{
public static boid main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Pick a class:");
System.out.println("Fighter: Deals more damage");
System.out.println("Mage: Has more health");
System.out.println("Theif: Deals less damage but has more health");
String Class = scan.nextLine();
if (Class.matches(".*Fighter.*"));
Fighter user = new Fighter();
else if (Class.matches(".*Mage.*"));
Mage user = new Mage();
else if (Class.matches(".*Thief.*"));
Thief user = new Thief();
else
Human user = new Human();
user.Name();
user.Explore();
/ *当我运行代码时,它突出显示第一个"用户"并说"这里不允许变量声明" 我不知道如何解决这个问题。 * /
答案 0 :(得分:1)
你有一些可能导致问题的拼写错误
public static boid main (String[] args)
应该是
public static void main (String[] args)
和
System.out.println("Theif: Deals less damage but has more health");
应该是
System.out.println("Thief: Deals less damage but has more health");
此外,大写字母Class()
和小写class
也是Java SDK中的东西。您应该使用不同的变量名称。我在下面的示例中使用了characterStr
。标准实践规定,您应该使用camelcase来命名变量,使用大写来命名Java类。在实例化Class()
对象时,人们通常将其实例化为Class clazz = new Class()
。
继续前进,我认为你应该为不同的用户类创建一个超类。设置这样的东西:
public abstract class Character
public class Fighter extends Character
public class Thief extends Character
public class Mage extends Character
public class Human extends Character
这样,main()
中的代码就可以使用您的Character()
对象
public static void main(String[] args)
{
// Prompt the user for the character they want
Scanner scan = new Scanner(System.in);
System.out.println("Pick a class:");
System.out.println("Fighter: Deals more damage");
System.out.println("Mage: Has more health");
System.out.println("Theif: Deals less damage but has more health");
// Get the user's response
String characterStr = scan.nextLine();
Character user; // You might have to initialize this. Did not test
if (characterStr.matches(".*Fighter.*"))
{
user = new Fighter();
}
else if (characterStr.matches(".*Mage.*"));
{
user = new Mage();
}
else if (characterStr.matches(".*Thief.*"));
{
user = new Thief();
}
else
{
user = new Human();
}
user.Name();
user.Explore();
}
答案 1 :(得分:1)
第一个问题:如果您没有在括号之间放置声明,则无法在then
语句的if
中声明变量。编译器不接受它。
第二个问题:如果你想在最后调用实例化实例上的方法,你应该在if-else-if
之前声明一个变量:
user.Name();
user.Explore();
在每个if
中,您应该实例化合适的子User类并将其分配给上面声明的user
变量。
在Java中,方法应以小写开头。我修改了它。
代码假设User
是父类,并且在条件语句中实例化的类是User
的子类。
User
应定义name()
方法和explore()
方法。
User user = null;
if (Class.matches(".*Fighter.*")){
user = new Fighter();
}
else if (Class.matches(".*Mage.*")){
user = new Mage();
}
else if (Class.matches(".*Thief.*")){
user = new Thief();
}
else{
user = new Human();
}
user.name();
user.explore();
答案 2 :(得分:0)
假设'用户'是一个拥有“班级”的球员。 (即战斗机/法师)。我会创建一个单独的玩家类并存储该信息。
class Player {
String classType; // where you would store the player's class information
int hitPoints;
}
答案 3 :(得分:0)
变量的类型必须是您可能分配给它的所有对象的公共基类。由于类Object
是所有其他类的基类,因此您可以这样做:
Object user = new Fighter();
但这可能不是一个好主意。
你应该从基类派生Fighter
,Mage
等,比如Character
。您也可以使用界面代替基类。