【问题标题】:Very simple Java syntax errors非常简单的 Java 语法错误
【发布时间】:2014-02-26 09:13:03
【问题描述】:

所以我正在尝试创建一个非常简单的程序来练习一些基本的 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);
    }
}

【问题讨论】:

  • 除了答案已经说了,你真的应该检查你的大括号 ({}),它们似乎很不平衡,这也可能会让你的编译器感到困惑。

标签: java methods


【解决方案1】:

你需要写

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

您还需要拨打fight()如下:

Hero.fight(Superman, Batman);

此外,根据 Java 的经验法则,您应该以小写字母开头所有变量。这只是编码约定。

【讨论】:

  • 哦对了,我得指定方法返回的数据类型。我觉得有点傻,忘记用点表示法调用方法。感谢您的帮助!
【解决方案2】:

正如 La-comadreja 所说,问题在于您尝试返回一个字符串,但您没有在方法头中定义它。

例子

public static void fight() {} 不返回,它只是做了一些事情 public static String fight(){} 返回一个字符串

【讨论】:

    【解决方案3】:

    以下是一些更正:

    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"
        }
    
    }
    

    【讨论】:

    • if 语句的花括号,我真的应该记住这一点。谢谢!
    • 可以在上面的代码中使用不带花括号的 if/else 语句,但如果您认为稍后要修改其中的某些内容,则首选使用花括号:stackoverflow.com/questions/2125066/…
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多