java - 我如何知道对象实例使用什么类型的变量?

标签 java instances

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();

/*当我运行代码时,它突出显示第一个“用户”并显示“此处不允许变量声明” 我不知道如何解决这个问题。 */

最佳答案

您有一些拼写错误,可能会导致问题

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。标准实践规定,应使用驼峰命名法来命名变量,使用大写法来命名 Java 类。当实例化一个Class()对象时,人们通常将其实例化为Class clazz = new Class()

展望 future ,我认为您应该为不同的用户类创建一个 super 类。设置如下:

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();

} 

关于java - 我如何知道对象实例使用什么类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109079/

相关文章:

java - 私有(private)方法的 Junit 测试用例

java - 如何使用 Gson 处理具有时间戳的 Json 响应? java.lang.IndexOutOfBoundsException

java - Netty 服务器关闭期间的异常

python - PEP 333 应用程序实例和对象

Python-在具有独立处理的循环中创建对象实例

java - Spring Boot JPA - 未设置 'hibernate.dialect' 时,对 DialectResolutionInfo 的访问不能为空

java - ivysettings.xml : add local maven path

python - SSM 向 EC2 实例发送命令失败

c++ - 工厂模式 : typedef Class *(createClassFunction)(void)

google-app-engine - GAE : memcache: is it the same across multiple app instances