gpt4 book ai didi

Java:如何在另一个类中使用一个类中实例化的对象?

转载 作者:行者123 更新时间:2023-12-01 22:55:28 25 4
gpt4 key购买 nike

我一直在尝试为高中的编程课创建一个游戏,并且遇到了与在不同类中实例化的对象有关的问题。我的老师无法提供帮助,因为他正在“与我们一起学习”。

public void launchGame(){
ObjectInitialize init = new ObjectInitialize();
init.objectInitialize();
while(year > 1900){
util.checkEvents();
prussia.setTactics(4);

我在另一个类中有一个调用此方法的主方法。该方法所做的第一件事是创建一个名为 initObjectInitialize 类的新对象。然后我在 init 上调用 objectInitialize 方法。这是该方法的代码:

public void objectInitialize(){
Country france = new Country("France", 10, 200, 2, 100, 100, 1, 1, 800);
Country russia = new Country("Russia", 8, 150, 1, 100, 100, 1, 1, 1300);
Country austria = new Country("Austria", 8, 150, 1, 100, 100, 1, 1, 700);
Country prussia = new Country("Prussia", 8, 175, 2, 100, 100, 1, 1, 700);
FranceUI franceUI = new FranceUI();
RussiaUI russiaUI = new RussiaUI();
AustriaUI austriaUI = new AustriaUI();
PrussiaUI prussiaUI = new PrussiaUI();
EventHandlerUI eventHandlerUI = new EventHandlerUI();
GameStartUI gameStartUI = new GameStartUI();
AllianceUI allianceUI = new AllianceUI();
Utilities util = new Utilities();
}

如您所见,此方法创建了许多对象。该方法没有明显的错误。但是,当我尝试使用 util.checkEvents()prusia.setTactics(4) 对象/方法时,我的 IDE 告诉我它“找不到符号”。这是因为 launchGame() 方法所在的类无法访问在其他类中创建的对象吗?如果是这样,我该如何解决这个问题?如果有人需要的话,我可以发布更多我的代码。谢谢!

编辑

我已将最初位于 objectInitialize() 方法中的所有代码移至构造函数中,并为外部的每个对象创建了变量,如下所示:

public class objectInitialize {
Country france;
Country russia;
Country austria;
Country prussia;
FranceUI franceUI;
RussiaUI russiaUI;
AustriaUI austriaUI;
PrussiaUI prussiaUI;
EventHandlerUI eventHandlerUI;
GameStartUI gameStartUI;
AllianceUI allianceUI;
Utilities util;

public objectInitialize(){
Country france = new Country("France", 10, 200, 2, 100, 100, 1, 1, 800);
System.out.println("france done");
Country russia = new Country("Russia", 8, 150, 1, 100, 100, 1, 1, 1300);
System.out.println("russia done");
Country austria = new Country("Austria", 8, 150, 1, 100, 100, 1, 1, 700);
System.out.println("austria done");
Country prussia = new Country("Prussia", 8, 175, 2, 100, 100, 1, 1, 700);
System.out.println("prussia done");
FranceUI franceUI = new FranceUI();
RussiaUI russiaUI = new RussiaUI();
AustriaUI austriaUI = new AustriaUI();
PrussiaUI prussiaUI = new PrussiaUI();
EventHandlerUI eventHandlerUI = new EventHandlerUI();
GameStartUI gameStartUI = new GameStartUI();
AllianceUI allianceUI = new AllianceUI();
System.out.println("ui done");
}
public Country getFrance(){
return france;
}
}

我还创建了返回对象的方法,就像你们中的一些人建议的那样。但是,我在这里仍然遇到问题:

public class Game {
int year = 1836;
int currentTurn = 0;

public void launchGame(){
System.out.println("123");
objectInitialize init = new objectInitialize();
System.out.println("123");
System.out.println(init.france.equip); // <-- Right here is the problem. My IDE
} // is telling me that I have a
} // NullPointerException at this line

即使我将 init.france.equip 更改为 init.getFrance().equip 我也会收到相同的错误。有任何想法吗?以下是 Country 类的代码:

public class Country {
String name;
int income;
int treasury;
int industry;
int influence;
int prestige;
int tactics;
int equip;
int manpower;

public Country(String startName, int startIncome, int startTreasury, int startIndustry, int startInfluence, int startPrestige, int startTactics, int startEquip, int startManpower){
name = startName;
income = startIncome;
treasury = startTreasury;
industry = startIndustry;
influence = startInfluence;
prestige = startPrestige;
tactics = startTactics;
equip = startEquip;
manpower = startManpower;
}
public int getEquip(){
return equip;
}

当我将 .equip 更改为 .getEquip 时,我仍然遇到相同的错误。

我认为该引用没有指向任何内容?但是创建 init 对象不应该允许我引用国家/地区对象吗?希望这不是一个坏问题,我非常感谢您的所有建议和帮助。

最佳答案

麦克米尔!实际发生的情况是,您正在创建一个对象,但从未返回对其的引用。您最好尝试将国家/地区定义为普通类别的一部分。像这样:

    public class ObjectInitialize(){
Country france,russia,austria,prussia;
...

public void objectInitialize(){
france = new Country("France", 10, 200, 2, 100, 100, 1, 1, 800);
russia = new Country("Russia", 8, 150, 1, 100, 100, 1, 1, 1300);
austria = new Country("Austria", 8, 150, 1, 100, 100, 1, 1, 700);
prussia = new Country("Prussia", 8, 175, 2, 100, 100, 1, 1, 700);
FranceUI franceUI = new FranceUI();
RussiaUI russiaUI = new RussiaUI();
AustriaUI austriaUI = new AustriaUI();
PrussiaUI prussiaUI = new PrussiaUI();
EventHandlerUI eventHandlerUI = new EventHandlerUI();
GameStartUI gameStartUI = new GameStartUI();
AllianceUI allianceUI = new AllianceUI();
Utilities util = new Utilities();
}
...
}

希望这有帮助!

然后为每个变量添加以下 getter:

public Country getPrussia(){
return prussia;
}

并对其他国家/地区重复此操作...

关于Java:如何在另一个类中使用一个类中实例化的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24120446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com