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