Java 将项添加到ArrayList

Java 将项添加到ArrayList,java,arraylist,Java,Arraylist,我有一个车队列表(每个车队都有自己的卡车列表) 我有一个带构造函数的舰队类 public Fleet(String businessName){ this.businessName = businessName; this.fleetList = new ArrayList<Truck>(); } 我的问题是,当我添加一个车队并打印结果时: Fleet 0: Fleet Number One 但是,当我添加车队编号1,然后再次按菜单上的1以添加另一个车队(命名为车

我有一个车队列表(每个车队都有自己的卡车列表)

我有一个带构造函数的舰队类

public Fleet(String businessName){
    this.businessName = businessName;
    this.fleetList = new ArrayList<Truck>();
}
我的问题是,当我添加一个车队并打印结果时:

Fleet 0: Fleet Number One
但是,当我添加车队编号1,然后再次按菜单上的1以添加另一个车队(命名为车队编号2)并打印车队列表时,结果是:

Fleet 0: Fleet Number Two
Fleet 1: Fleet Number Two
这似乎混淆了两者…当我尝试向车队添加卡车时,这进一步破坏了程序,因为它无法选择“正确”的车队

如果您需要我的任何其他代码,请告诉我。 我只需要这个来正确添加和打印车队列表中的车队:

private static ArrayList<Fleet> fleetCollection;
私有静态数组列表集合;

谢谢你:)谢谢你的帮助

您可能在Fleet class
static
中声明了
businessName
,如果是这样,请将其删除

我对您的程序做了一些小修改,使其变得简单

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());
    }
}

}

检查“businessName”字段中的访问修饰符。它不应该是静态的。还要检查printfeels()方法。

您需要清楚地了解如何使用
static

静态变量

  • 它是属于类而不是对象(实例)的变量
  • 静态变量只在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量
  • 类的所有实例共享的单个副本
  • 静态变量可以通过类名直接访问,不需要任何对象
  • 语法:
静态方法

  • 它是属于类而不是对象(实例)的方法
  • 静态方法只能访问静态数据。它无法访问非静态数据(实例变量)
  • 静态方法只能调用其他静态方法,不能从中调用非静态方法
  • 静态方法可以通过类名直接访问,不需要任何对象
  • 语法:
  • 静态方法无论如何都不能引用“
    this
    ”或“
    super
    ”关键字

src:

您是否已覆盖舰队中的equals方法?如果是这样,并且它不正确,这可能是你奇怪结果的原因

你能发布printFleets()方法的代码吗?嘿,伙计。。。。您的问题在哪里?在这种情况下,
getBusinessName()
不应该是静态的,以删除
getBusinessName()的方法修饰符
static
,而不是
fleet.getBusinessName()
的方法修饰符
static
//使用
fleet
对象,不要用作static谢谢:)它现在可以正确返回fleet,但my addTruck()仍然损坏。您需要该类的实例才能调用非静态方法;如下所示:对象a=新对象();a、 方法();我应该为这个问题提出一个新问题吗?或者我应该删除上面的所有内容,然后在这里发布新问题?
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