我有一个Fleets的阵列列表(每个舰队将拥有自己的卡车列表)。
我有一个带有构造函数的舰队类
public Fleet(String businessName){
this.businessName = businessName;
this.fleetList = new ArrayList<Truck>();
}
所以:
在我的TUI中,我有一个名为createFleet的辅助方法。当用户在菜单上按1时,它会询问他的业务名称,然后创建一个名为该队列的车队。那个方法是:
public static void createFleet(){
System.out.println("");
System.out.println("Please enter the name of the fleet.");
inputText = scan.nextLine();
fleetCollection.add(new Fleet(inputText));
printFleets();
System.out.println("");
System.out.println("--- Fleet: " + inputText + " added ---");
System.out.println("");
}
我的问题是,当我添加一个舰队时,打印结果我得到:
Fleet 0: Fleet Number One
但是当我添加第一舰队时,再次按下菜单上的1以添加另一个舰队(名为舰队编号二)并打印车队列表,结果是:
Fleet 0: Fleet Number Two
Fleet 1: Fleet Number Two
这似乎令两人感到困惑......当我试图将卡车添加到舰队时,这进一步打破了程序,因为它无法选择“正确”的舰队。
如果您需要我的任何其他代码,请告诉我。 我只需要这个就可以在车队列表中正确添加和打印车队:
private static ArrayList<Fleet> fleetCollection;
谢谢:)获取所有帮助!
答案 0 :(得分:3)
您可能在Fleet类businessName
中声明了static
,如果是,请将其删除
答案 1 :(得分:3)
您需要明确使用static
静态变量
<class-name>.<variable-name>
静态方法
<class-name>.<method-name>
this
”或“super
”关键字src:http://www.javatutorialhub.com/java-static-variable-methods.html
答案 2 :(得分:2)
答案 3 :(得分:1)
我对您的程序进行了少量修改,以简化程序。
class Fleet{
String businessName;
public Fleet(String businessName)
{ this.businessName = businessName;}
public String getBusinessName()
{
return businessName;
}
}
public class T {
private static ArrayList<Fleet> fleetCollection = new ArrayList<Fleet>();
public static void main(String[] args)
{
createFleet("A");
printFleets();
createFleet("B");
printFleets();
}
public static void createFleet(String name){
System.out.println("");
fleetCollection.add(new Fleet(name));
}
public static void printFleets(){
Iterator i = fleetCollection.iterator();
Fleet f;
while(i.hasNext())
{
f = (Fleet)i.next();
System.out.println(f.getBusinessName());
}
}
}
按预期打印。
A
A
B
在“businessName”字段中检查您的访问修饰符。它不应该是静态的。还要检查printFleets()方法。