[英]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.