我试图完成我所做的这个战斗课程,但我一直都会遇到同样的错误而且我不知道该怎么做,所以任何帮助都会受到赞赏。
public class Fight{
public static void main(String args[]){
Superhero Storm = new Superhero ("Storm "); //creates storm using the superhero object
Storm.powerUp(100);
Superhero StarLord = new Superhero ("Star Lord ",27); //creates star lord using the superhero object
StarLord.powerUp(0);
static String fight(a.Superhero(),b.Superhero());
{
if(a.superheroStrength > b.superheroStrength){
return a.superheroName;
}
else if(a.superheroStrength < b.superheroStrength){
return b.superheroName;
}
}
Superhero winner = Storm.fight(StarLord);
System.out.println("Storms strength is: " + Storm.superheroStrength);
System.out.println("Storms power up is: " + Storm.powerUp);
System.out.println("Star Lords strength is: " + StarLord.superheroStrength);
System.out.println("Star Lords power up is: " + StarLord.powerUp);
System.out.println("The winner is: " + fight(Storm, StarLord));
}
}
我得到的错误都在第10行,而且,错误是非法开始表达式&#39; (指向静态)和&#39;错误&#34;;&#34;预期&#39; (也指向第一个和最后一个开括号和中间的逗号。
static String fight(a.Superhero(),b.Superhero());
这是我的另一个类,其中包含战斗类使用的对象。
public class Superhero {
private String superheroName;
private int superheroStrength;
public int powerUp;
public Superhero (String superheroName, int superheroStrength, int powerUp){
this.superheroName = superheroName;
this.superheroStrength = superheroStrength;
System.out.println("Superhero: " + superheroName);
System.out.println("Strength: " + ( superheroStrength + powerUp));
}
public Superhero (String superheroName, int powerUp){
this.superheroName = superheroName;
superheroStrength = 10;
System.out.println("Strength: " + ( superheroStrength+powerUp));
}
public int getStrength(){
return superheroStrength += powerUp;
}
public void powerUp (int powerUp){
this.powerUp += powerUp;
}
public Superhero fight(Superhero opponent){
if (this.getStrength()>opponent.getStrength())
return this;
return opponent;
}
public String toString(){
return this.superheroName;
}
}
答案 0 :(得分:2)
您的代码中存在许多错误。让我逐一解释。
Superhero Storm = new Superhero ("Storm ");
在上面的一行中,你试图使用Superhero的构造函数,它带有一个应该是这样的参数
public Superhero (String superheroName){ ... }
但是你没有像这样的构造函数。你有一个需要两个参数。例如:
public Superhero (String superheroName, int powerUp){ ... }
所以像这样替换它
Superhero Storm = new Superhero ("Storm ", 0);
然后下一个问题在本节
static String fight(a.Superhero(),b.Superhero());
{
if(a.superheroStrength > b.superheroStrength){
return a.superheroName;
}
else if(a.superheroStrength < b.superheroStrength){
return b.superheroName;
}
}
Several Errors here
1 a and b is not defined,
2 ";" does not belong here
3. the syntax is all wrong
如果你想找到两个“超级英雄”物品之间的赢家, 那么你应该像超级英雄一样在“超级英雄”课程中调用“战斗”方法。
Superhero winner = Storm.fight(StarLord);
你做了什么。
以下行无效,因为“superheroStrength”是私有的,因此您无法直接访问它
System.out.println("Storms strength is: " + Storm.superheroStrength);
但您可以通过Superhero类中的公共方法getStrength访问它,所以用这个替换该行。
System.out.println("Storms strength is: " + Storm.getStrength());
和
System.out.println("Star Lords strength is: " + StarLord.superheroStrength);
有了这个
System.out.println("Star Lords strength is: " + StarLord.getStrength());
你的上一个错误是这一行。语法都错了
System.out.println("The winner is: " + fight(Storm, StarLord));
为了找到Storm和StarLord之间的赢家,您必须在一个对象上调用fight方法,将另一个对象作为参数传递。所以用这个代替那条线。
System.out.println("The winner is: " + Storm.fight(StarLord));