Я думаю, что может быть несколько ошибок, но в основном я хочу добавить Корабль каждый раз, когда цикл проходит снова в моем классе дайвера. Но по какой-то причине мой метод toString выводит только последнюю добавленную или последнюю итерацию цикла do while. Я могу опубликовать весь код, если это необходимо, но я предполагаю, что проблема находится в одном из этих двух классов.ArrayList не расширяется при добавлении объектов через цикл
корабль класса
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;
}
}
ShipCompany Класс
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 или моим методом добавления. Я просто не знаю, как это исправить. Любая помощь приветствуется.
Посмотрите, можете ли вы реорганизовать это, чтобы не использовать какие-либо статические переменные – Misha