将数组列表的元素复制到另一个数组列表

时间:2011-03-01 07:10:53

标签: java

我写了这么简单的代码:

  • 我在班级的构造函数中写了这一行:List element = new ArrayList();

  • 我有一个名为cost的变量,其类型为int

  • 一个方法将返回三个包含不同对象的列表:listOne, listTwo, listThree

  • 我在下面编写的另一种方法代码中,该方法将使用在上述方法中创建的那些列表。对于上面的三个列表,此方法将被调用三次。每个名单的每个电话。

    // begining of the method:
    int cost = 0;
    
    if(cost==0){
        element = listOne;
        cost = 3;
    }
    if(cost<4){
        element = listtwo;
        cost = 6;
    }
    // end
    
    System.out.println(element.toString());
    

不幸的是,它不会打印listTwo而是打印listThree(如果我们有4个或更多列表,它将打印最后一个列表)!

if-else条件有问题吗?

感谢

编辑:这是我的主要代码,但其条件与上面的代码类似: 以下代码中的auxiliaryList分别为listOnelist TwolistThree

cost = 0;

public void method {


                System.out.println(element.toString());//number one
                if (cost== 0) {


                element = auxiliaryList;
                cost = 3;

                }
                else if( cost<4){

                        element =auxiliaryList;
                         cost = 6;
                }

            }
            return;

        }

}

使用//number one声明的行也告​​诉我,在进入if / else条件之前,元素列表将被设置为方法中的当前列表。

1 个答案:

答案 0 :(得分:5)

  

if-else条件是否有任何问题。

是的 - 问题是你不是使用 if / else,你只是使用两个if语句。

更改第二个if以使用else,这样就可以了:

  if (cost == 0) {
      element = listOne;
      cost = 3;
  } else if (cost < 4) {
      element = listtwo;
      cost = 6;
  }

问题是,如果cost为0,它将进入第一个块,将cost设置为3,然后进入第二个块,因为3更少没有“别的”可以阻止这种情况发生 - 两个if块完全独立。