【问题标题】:Java cannot find a specific method on a seperate fileJava 在单独的文件中找不到特定方法
【发布时间】:2018-11-23 03:22:15
【问题描述】:

我使用 Visual Studio Code,我只是创建了一个文件夹,里面有“项目”,我不喜欢在小程序中使用 netbeans、eclipse 等。

所以我正在创建一个小程序,我怀疑它会起作用,但它确实适用于 mos 部分,它创建了一个类似 rpg 的角色和第二个角色,并创建了一个模拟战斗,其中一个角色根据一个统计数据获胜.一切似乎都正常,但是当我调用 Battle(oumar, aisha); 方法时,它需要两个字符并让他们战斗,它得到一个错误说 Main.java:6: error: cannot find symbol Battle(oumar, aisha); ^ symbol: method Battle(Character,Character) location: class Main

因此,由于我经验不足,因此我不确定问题到底是什么。 这是主类的代码:

    public class Main {
    public static void main(String args[]) {

        Character oumar = new Character("Oumar", 10);
        Character aisha = new Character("Aisha", 9);
        Battle(oumar, aisha);

    }


}

这是一个单独文件中的第二个类(仍在同一个文件夹中)

public class Character {

    String name;
    int BattlePower;
    int wins;
    Character one;
    Character two;

    public Character(String name, int BattlePower) {
        this.name = name;
        this.wins = wins;
        System.out.println("New character: "+ name);
        this.BattlePower = BattlePower;
        this.wins = wins;
        System.out.println(name + "has a Battle Power of " + BattlePower);
    }

    public void Battle(Character one, Character two) {

        this.one = one;
        this.two = two;

        if (one.BattlePower > two.BattlePower ) {
            System.out.print("Character " + one + " has won the Battle!");
            one.wins++;
            System.out.print("Character one now has " + wins + " wins!");
        }
        else if (two.BattlePower > one.BattlePower) {
            System.out.print("Character " + two + " has won the Battle!");
            two.wins++;
            System.out.print("Character two now has " + wins + " wins!");
        }
        else {

            System.out.print("The two characters have tied!");

        }    
    }    
}

任何帮助都会很棒,以及将来可能对我有帮助的任何提示。

【问题讨论】:

    标签: java visual-studio oop object


    【解决方案1】:

    我相信你需要使用

    oumar.Battle(oumar, aisha)

    aisha.Battle(oumar, aisha)

    由于该方法位于非静态类中,因此在没有对象引用的情况下无法调用它。

    如果你想这样称呼它

    Battle(oumar, aisha)

    您需要将其移至主类。

    此外,其他 IDE 上也应该存在此问题。

    【讨论】:

    • 非常感谢我感觉自己像个白痴,当然对象类中的方法需要由对象调用(不确定我是否措辞正确)但谢谢
    【解决方案2】:

    您可以在 Character 类中放置一个无参数构造函数,例如 public Character(){}。然后在 Main.java 中,您可以使用无参数构造函数创建 Character 类的对象,然后调用 Battle 方法,如 Character ch1 = new Character(); ch1.Battle(oumar,aisha).

    【讨论】:

    • 谢谢这帮助,但我只是想知道我会在这个构造函数里面放什么,我会保留原来的吗?
    • 你必须在构造函数中不放任何东西,你可以保留原来的。这是 java 的构造函数重载特性。
    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    相关资源
    最近更新 更多