【问题标题】:How to call a class, Java - Eclipse如何调用一个类,Java - Eclipse
【发布时间】:2014-11-21 17:34:05
【问题描述】:

我正在制作一个基于文本的角斗士格斗游戏。我遇到的问题是当我尝试调用它时它不会进入另一个类。这就是我所拥有的。

主类

if (fill.equals("1")) {
    arena = true;
    while (arena == true) {
        System.out.println("You travel to the arena.");
        fill = scan.next();
        System.out.println("Vanguard: Welcome!");
        System.out.println("1) Enter the arena.");
        System.out.println("2) Exit the arena.");
        fill = scan.next();
        if (fill.equals("1")) {
            System.out.println("Vanguard: These are the available matches:");
            if (rank == "Rookie") {
                System.out.println("1) Snow");
                System.out.println("2) Blaze");
                System.out.println("3) Ember");
                fill = scan.next();

                if (fill.equals("1")) {
                    System.out.println("You with to battle Snow? Y/N");
                    fill = scan.next();
                    fill = fill.toLowerCase();
                    if (fill.equals("y")) {
                        enemy = "Snow";
                        enemyhealth = 35;
                        enemydamage = enemydamrn.nextInt((7 - 5) + 1) + 5;
                        System.out.println("You go to the arena to prepare with snow.");

                        Battle Battle = new Battle();
                    }       
                }
            }
        }
    }
}

当我在扫描仪中输入“y”时,它只会在 while 语句处重新启动,而不是去上课。

如果我能得到任何帮助,我将不胜感激。我对 java 很陌生,我已经用它编码了大约 1.5 个月,我希望能够找出这个问题。我希望你们中的任何人都可以帮助我! ^_^/

【问题讨论】:

  • 你在哪里设置arena = false?这似乎是退出 while 循环的合乎逻辑的方式。
  • 你希望Battle Battle = new Battle() 做什么?
  • 有趣的是你会使用fill.equals("1")rank == "Rookie"
  • 仅仅创建一个类的实例并不会产生您可能正在寻找的任何功能。该实例本质上是一个从该类中获取功能的指针。你必须使用那个指针。

标签: java eclipse class while-loop


【解决方案1】:

当你说

Battle Battle = new Battle();

你用一个非常不幸的名字构造了一个Battle 的新实例。建议你试试

Battle battle = new Battle();

然后(除非您在 Battle 构造函数中执行所有操作,我会推荐)您需要调用要在您的 Battle 实例上执行的方法,例如

battle.someMethod();

还有,

if (rank == "Rookie") {

不适用于比较String(s)。那是引用相等(不是值)。您需要测试String 等式

if (rank.equals("Rookie")) {

【讨论】:

  • 加 1 用于指导 OP 关于 battle 对象的 camelCasing java 约定。尽管可能值得注意,但您可以保留它而不调用方法。拥有Battle的构造函数中的所有内容
  • @OP 可能类似于:while (battle.isActive()) {...} 而不是在构造函数中包含它
猜你喜欢
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多