我试图创建一个具有不同属性的多个字符的程序。我遇到了一个问题,我调用了一个方法(试过)在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()"方法无法解决。
谢谢!
老实说,可能存在很多错误。
答案 0 :(得分:5)
该方法属于类Character
,因此您应该针对实例John
调用它:
John.workout(5);
作为旁注,通常使用小写字母(john
而不是John
和str
而不是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