我试图创建一个具有不同属性的多个字符的程序。我遇到了一个问题,我调用了一个方法(试过)在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()”方法。
谢谢!
老实说,可能存在很多错误。
该方法属于类Character
,因此您应该针对实例John
调用它:
John.workout(5);
作为旁注,常规的是用小写字母(john
而不是John
而不是str
)开始变量的名称,并给它们反映其类型的名称(Str
给出一个暗示它是Str
,而它事实上是一个String
)。
编辑:
根据您的评论,如果您想按照自己的方式调用方法int
,可以将方法移动到workout
类,并更改它以便引用将要更新的CharacterAttributes
实例。
Character
你不能只做锻炼(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