摆脱java中的最后几个错误

时间:2015-10-17 18:11:31

标签: java compiler-errors

我试图完成我所做的这个战斗课程,但我一直都会遇到同样的错误而且我不知道该怎么做,所以任何帮助都会受到赞赏。

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

1 个答案:

答案 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));