[英]Adding item to an ArrayList
我有一個艦隊列表(每個艦隊將擁有自己的卡車列表)。
我有一個與建設者的艦隊班
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並打印結果時,我得到:
Fleet 0: Fleet Number One
但是,當我添加第一艦隊時,然后再次按菜單上的1以添加另一個艦隊(名為第二艦隊)並打印艦隊列表,結果是:
Fleet 0: Fleet Number Two
Fleet 1: Fleet Number Two
這似乎使兩者混淆了……當我嘗試向車隊中添加卡車時,這進一步破壞了程序,因為它無法選擇“正確的”車隊。
如果您需要我的其他代碼,請告訴我。 我只需要這個就可以正確添加並打印艦隊列表中的艦隊:
private static ArrayList<Fleet> fleetCollection;
謝謝:)提供的所有幫助!
您可能已在Fleet類中將businessName
聲明為static
,如果是,則將其刪除
您需要清楚使用static
靜態變量
<class-name>.<variable-name>
靜態方法
<class-name>.<method-name>
this
”或“ super
”關鍵字 src: http : //www.javatutorialhub.com/java-static-variable-methods.html
您是否在Fleet中重寫了equals方法? 如果是這樣,那是不正確的,那可能是導致您結果怪異的原因
我對您的程序做了一些小的修改以使其變得簡單。
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()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.