Java无法在单独的文件上找到特定的方法

时间:2018-11-23 03:22:16

标签: java visual-studio oop object

我正在使用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!");

        }    
    }    
}

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

2 个答案:

答案 0 :(得分:0)

我相信您需要使用

oumar.Battle(oumar, aisha)

aisha.Battle(oumar, aisha)

,因为该方法位于非静态类的内部,所以如果没有对象引用就无法调用它。

如果您想这样称呼

Battle(oumar, aisha)

您需要将其移至主类。

此外,这些问题也应该在其他IDE上出现。

答案 1 :(得分:0)

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