非常简单的Java语法错误

时间:2014-02-03 00:06:12

标签: java methods

所以我试图创建一个非常简单的程序来练习一些基本的Java格式化技巧。然而,关于“fight()”的一些事情正在让我的编译器疯狂。谁知道为什么?提前感谢我收到的任何答案,代码如下:

class Hero{
    String name;
    int Intelligence;
    boolean parents;

    public static fight(Hero1, Hero2){
    if(Hero1.Intelligence>Hero2.Intelligence){
        return(Hero1.name+" is the winner");
    else
        return(Hero2.name+" is the winner");
        }
    }
}



class HeroMain{
    public static void main(String[] args){
    Hero Superman = new Hero();
    Superman.name = "Superman";
    Superman.Intelligence = 7;
    Superman.parents = false;

    Hero Batman = new Hero();
    Batman.name = "Batman";
    Batman.Intelligence = 8;
    Batman.parents = false;

    public fight(Superman, Batman);
    }
}

3 个答案:

答案 0 :(得分:5)

你需要写

public static String fight(Hero hero1, Hero hero2) {

您还需要按以下方式致电fight()

Hero.fight(Superman, Batman);

此外,根据Java的经验,您应该使用小写字母开始所有变量。那只是编码惯例。

答案 1 :(得分:3)

正如La-comadreja所述,问题在于您尝试返回字符串,但是您没有在方法标题中定义该字符串。

示例

public static void fight() {}没有回来,只是做了些什么 public static String fight(){}返回一个String

答案 2 :(得分:1)

以下是一些更正:

class Hero{
    String name;
    int Intelligence;
    boolean parents;

    public static String fight(Hero Hero1, Hero Hero2){ <-- specify type of parameter and return type
        if(Hero1.Intelligence>Hero2.Intelligence) <-- you had a curly-brace problem
            return(Hero1.name+" is the winner");
        else
            return(Hero2.name+" is the winner");
    }
}



class HeroMain{
    public static void main(String[] args){
        Hero Superman = new Hero();
        Superman.name = "Superman";
        Superman.Intelligence = 7;
        Superman.parents = false;

        Hero Batman = new Hero();
        Batman.name = "Batman";
        Batman.Intelligence = 8;
        Batman.parents = false;

        String myStr = Hero.fight(Superman, Batman); <-- call a hero's fight method
        System.out.println(myStr); // "Batman is the winner"
    }

}