错误:无法解析方法

时间:2014-09-10 19:32:55

标签: java

我试图创建一个具有不同属性的多个字符的程序。我遇到了一个问题,我调用了一个方法(试过)在Class Character中定义。

public class CharacterAttributes
{
    public static void main(String[] args) 
    {
       Character John = new Character("John", 0);
       workout(5);
    }
}
class Character
{
   private String name;
   private int Str;
   public Character(String n, int initialStr) 
   {
      name = n;
      Str = initialStr;
   }
   public void workout(int byAmt) {
      Str = Str + byAmt;
   }
}

编译器说" exercise()"方法无法解决。

谢谢!

老实说,可能存在很多错误。

2 个答案:

答案 0 :(得分:5)

该方法属于类Character,因此您应该针对实例John调用它:

John.workout(5);

作为旁注,通常使用小写字母(john而不是Johnstr而不是Str)来启动变量的名称,并且给他们反映他们类型的名字(Str给出一个提示,它是String,而实际上是int。)

修改

根据您的评论,如果您想按照自己的方式调用方法workout,可以将方法移到CharacterAttributes类,然后更改它以便它需要对将要更新的Character实例的引用。

public static void main(String[] args) {
    Character John = new Character("John", 0);
    workout(John, 5);
}

public static void workout(Character character, int byAmt) {
    // use a setter to set the attribute
    character.setStr(character.getStr() + byAmt);
}

class Character {
   private String name;
   private int Str;
   public Character(String n, int initialStr) {
       name = n;
       Str = initialStr;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public int getStr() {
       return Str;
   }
   public void setStr(int str) {
       Str = str;
   }
}

答案 1 :(得分:1)

你不能只做锻炼(5)

你这样做了

Character John = new Character("John, 0);

所以你这样做:

John.workout(5)

抱歉,但你的约定非常糟糕

public int Str应为public int str