我正在为我的计算机科学课编写一个基于文本的游戏(我是一个初学者,几乎每天仍在学习新东西),我正在尝试制作一种方法来打印四名党员的信息;然而,我在尝试让 getter 方法获取有关主类中特定玩家对象的信息时遇到了一些麻烦。我正在尝试在不同的类中使用吸气剂。
以下是使用相关方法的三个类:
public class Main {
public static void main(String[] args) {
UIFunctions.startMenu();
}//End of main method
Characters smallMan = new Characters("Stuart Little", 2, 1.2, 0.45, false);
Characters tallMan = new Characters("Big Mike", 6, 2.0, 0.30, false);
Characters strongMan = new Characters("Barney Buff", 10, 1.5, 0.10, true);
Characters deepPockets = new Characters("Guilo Baggin", 3, 1.6, 0.65, false);
}//End of main
public class Characters {
private static String name;
private static int strength;
private static double height;
private static double luck;
private static boolean isGullible;
public Characters() {}
public Characters(String characterName, int characterStrength, double characterHeight, double characterLuck, boolean isStupid){
name = characterName;
strength = characterStrength;
height = characterHeight;
luck = characterLuck;
isGullible = isStupid;
}
//--------------------------------------------------------
// Getter methods
//--------------------------------------------------------
public static String getCharacterName() {
return name;
}
public static int getCharacterStrength() {
return strength;
}
public static double getCharacterHeight() {
return height;
}
public static double getCharacterLuck() {
return luck;
}
}
public class UIFunctions{
public static void groupMenu(smallMan.getCharacterName) {
}
}
我尝试在方法声明前面排除角色名称,然后直接将 getter 放入 groupMenu 方法中,但是当我测试程序时什么也没有发生,就这样结束了。
然后我尝试了同样的事情,但这样做了:
public static void groupMenu(){
smallMan.getCharacterName();
}
但这也失败了。
您正在尝试从不同的类(UIFunctions)访问Characters对象(如smallMan)的属性。您面临的问题与您的角色对象及其属性的范围和使用有关。
将Characters类更改为具有实例变量(从字段中删除static关键字),因为您希望每个角色都有自己的属性集,而不是在类的所有实例之间共享它们。
public class Characters {
private String name;
private int strength;
private double height;
private double luck;
private boolean isGullible;
public Characters() {}
public Characters(String characterName, int characterStrength, double characterHeight, double characterLuck, boolean isStupid){
name = characterName;
strength = characterStrength;
height = characterHeight;
luck = characterLuck;
isGullible = isStupid;
}
// Getter methods
public String getCharacterName() {
return name;
}
public int getCharacterStrength() {
return strength;
}
public double getCharacterHeight() {
return height;
}
public double getCharacterLuck() {
return luck;
}
}
在 Main 类中创建 Characters 对象的实例,并在需要时通过将它们声明为静态来使其他类可以访问它们。
public class Main {
public static Characters smallMan = new Characters("Stuart Little", 2, 1.2, 0.45, false);
public static Characters tallMan = new Characters("Big Mike", 6, 2.0, 0.30, false);
public static Characters strongMan = new Characters("Barney Buff", 10, 1.5, 0.10, true);
public static Characters deepPockets = new Characters("Guilo Baggin", 3, 1.6, 0.65, false);
public static void main(String[] args) {
UIFunctions.startMenu();
}
}
在 UIFunctions 类中,您现在可以使用实例变量和 getter 方法访问字符信息,如下所示:
public class UIFunctions {
public static void groupMenu() {
System.out.println("Character name: " + Main.smallMan.getCharacterName());
System.out.println("Character strength: " + Main.smallMan.getCharacterStrength());
// Add similar lines for other character attributes
}
}