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