Java 在添加到arraylist时嵌套,但未按预期工作

Java 在添加到arraylist时嵌套,但未按预期工作,java,if-statement,while-loop,Java,If Statement,While Loop,此方法中的if和while语句有问题。所需的功能是在1到5之间选择一个数字,并将一个对象添加到arraylist。类中有一个名为numberOfShips的字段,用于while循环,它决定数组中对象的最大数量。count变量应跟踪何时达到限制 然而,事实并非如此。我选择例如1,它将选择次数增加1次。然后它说舰队已经满了,因为这是极限。我似乎不知道问题出在哪里,因为我已经尝试了if语句的几种变体,而且我也尝试了一段时间,但都不起作用 public ArrayList<Ship> cre

此方法中的if和while语句有问题。所需的功能是在1到5之间选择一个数字,并将一个对象添加到arraylist。类中有一个名为numberOfShips的字段,用于while循环,它决定数组中对象的最大数量。count变量应跟踪何时达到限制

然而,事实并非如此。我选择例如1,它将选择次数增加1次。然后它说舰队已经满了,因为这是极限。我似乎不知道问题出在哪里,因为我已经尝试了if语句的几种变体,而且我也尝试了一段时间,但都不起作用

public ArrayList<Ship> createFleet(int choice) {
        ArrayList<Ship> fleet = new ArrayList<Ship>();
        int count = 0;
        if(choice > 1 && choice < 5) {
            while ((count < numberOfShips)) {
                if (choice == 1) {
                    Ship ac = new Ship("Aircraft carrier", 5, false);
                    fleet.add(ac);
                    count++;
                    System.out.println("Aircraft carrier has been added to fleet.");
                } else if (choice == 2) {
                    Ship bs = new Ship("Battleship", 4, false);
                    fleet.add(bs);
                    count++;
                    System.out.println("Battleship has been added to fleet.");
                } else if (choice == 3) {
                    Ship sm = new Ship("Submarine", 3, false);
                    fleet.add(sm);
                    count++;
                    System.out.println("Submarine has been added to fleet.");
                } else if (choice == 4) {
                    Ship ds = new Ship("Destroyer", 3, false);
                    fleet.add(ds);
                    count++;
                    System.out.println("Destroyer has been added to fleet.");
                } else {
                    Ship sp = new Ship("Patrol Boat", 2, false);
                    fleet.add(sp);
                    count++;
                    System.out.println("Patrol boat has been added to fleet.");
                }
            } //while
        } else {
            System.out.println("Not an option.");
        }
        System.out.println("Fleet contains maximum ships.\nYour fleet is:");
        for (int i = 0; i < fleet.size(); i++) {
            System.out.println(fleet.get(i));
        }
        start();
        return fleet;
    }
public ArrayList createFleet(int选项){
ArrayList fleet=新的ArrayList();
整数计数=0;
如果(选项>1&&选项<5){
而((计数<船舶数量)){
如果(选项==1){
船舶ac=新船舶(“航空母舰”,5,假);
车队。添加(ac);
计数++;
System.out.println(“航空母舰已加入舰队”);
}else if(选项==2){
船舶bs=新船舶(“战列舰”,4,假);
车队。添加(bs);
计数++;
System.out.println(“战舰已加入舰队”);
}else if(选项==3){
船舶sm=新船舶(“潜艇”,3,假);
车队。添加(sm);
计数++;
System.out.println(“潜艇已加入舰队。”);
}else if(选项==4){
船舶ds=新船舶(“驱逐舰”,3,假);
车队。添加(ds);
计数++;
System.out.println(“驱逐舰已加入舰队。”);
}否则{
船舶sp=新船舶(“巡逻艇”,2,假);
车队。添加(sp);
计数++;
System.out.println(“巡逻艇已加入舰队。”);
}
}//而
}否则{
System.out.println(“不是选项”);
}
System.out.println(“舰队包含最多船只。\n您的舰队是:”);
对于(int i=0;i
您不需要时间,但需要执行以下操作

if(count < numberOfShips && choice > 0 && choice < 5) {
   // Check which ship
}
if(计数0&&choice<5){
//检查哪艘船
}
此外,变量计数应在方法之外,因此:

public class Test { 
   private int numberOfShips = 400;
   private int count;

   public ArrayList<Ship> createFleet(int choice) {
       ArrayList<Ship> fleet = new ArrayList<Shipe>();
       if(count < numberOfShips) {
         if(choice > 0 && choice < 5) {
            //appropriate ship..
         }
       } else {
          System.out.prinln("Capactity reached");
       }  
   }
}
公共类测试{
私人国际船舶数量=400;
私人整数计数;
公共ArrayList createFleet(整数选择){
ArrayList fleet=新的ArrayList();
如果(计数<船舶数量){
如果(选项>0&&选项<5){
//合适的船。。
}
}否则{
系统输出优先级(“达到容量”);
}  
}
}
代码中的while将继续,直到capactiy被记录为止,使用此函数则不会。 While是一个循环,if是一个简单的检查