gpt4 book ai didi

java - 通过循环添加对象时 ArrayList 不扩展

转载 作者:行者123 更新时间:2023-12-02 04:43:16 25 4
gpt4 key购买 nike

我认为可能有很多问题,但基本上我想在每次循环在我的潜水员类中再次运行时添加一艘船。但由于某种原因,我的 toString 方法仅输出最新添加的或 do while 循环的最后一次迭代。如果需要,我可以发布所有代码,但我认为问题出在这两个类之一中。

船级

import java.util.Scanner;


public class ShipDriver
{


static Ship cS;
static Ship cargo;


public static void main(String[] args)
{
System.out.println("----------------------Ship Company----------------------");
String name, ans;
int year, passenger = 0, ton = 0, oneTwo;
Scanner kb = new Scanner(System.in);
ShipCompany sh = new ShipCompany();

do
{
System.out.println("Enter the ship's name:");
name = kb.next();

System.out.println("Enter the " + name + " build year:");
year = kb.nextInt();


System.out.println("Enter 1 for cruise ship or 2 for a cargo ship");
oneTwo = kb.nextInt();



if(oneTwo == 1)
{
System.out.println("Enter the number of passengers for the " + name);
passenger = kb.nextInt();
}
else
{
System.out.println("Enter the maximum capacity of the " + name);
ton = kb.nextInt();
}


cS = new CruiseShip(name, year, passenger);
cargo = new CargoShip(name, year, ton);
sh.add(getInfo(oneTwo));
System.out.println("Do you want enter another ship's information? y/n");
ans = kb.next();

}while(ans.equals("y") || ans.equals("Y") || ans.equals("Yes") || ans.equals("yes") );

System.out.println(sh.toString());
kb.close();
}
public static Ship getInfo(int num)
{
if(num == 1)
{
return cS;
}
else
return cargo;

}
}

船公司类别

import java.util.ArrayList;

public class ShipCompany
{
static ArrayList<Ship> arr;
Ship ship = new CargoShip();
Ship ship2 = new CruiseShip();

public ShipCompany()
{
arr = new ArrayList<Ship>();
}

public static void add(Ship o)
{
arr.add(o);
}

public String toString()
{
for(int i = 0; i < arr.size(); i++)
{
if(ShipDriver.getInfo() instanceof CargoShip)
{
return ship.toString();
}
else
return ship2.toString();
}
}
}

如果您需要其他 3 个类,我可以像我说的那样发布它们,但我很确定问题可能出在我的 toString 方法或 add 方法上。我只是不知道如何解决它。非常感谢任何帮助。

最佳答案

当您调用游轮或货船的构造函数时,它还会调用父类(super class)构造函数,其中静态字段 arr 的旧值丢失。

关于java - 通过循环添加对象时 ArrayList 不扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931691/

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