错误:无法解析方法

问题描述 投票:1回答:2

我试图创建一个具有不同属性的多个字符的程序。我遇到了一个问题,我调用了一个方法(试过)在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;
   }
}

编译器说无法解决“workout()”方法。

谢谢!

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

java
2个回答
5
投票

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

John.workout(5);

作为旁注,常规的是用小写字母(john而不是John而不是str)开始变量的名称,并给它们反映其类型的名称(Str给出一个暗示它是Str,而它事实上是一个String)。

编辑:

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

Character

1
投票

你不能只做锻炼(5)

你这样做了

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

所以你也是:

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

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

John.workout(5) 应该是public int Str

© www.soinside.com 2019 - 2024. All rights reserved.