简体   繁体   中英

copying elements of an array-list to the other array-list

I have written such a simple code:

  • I have written this line in my class's constructor : List element = new ArrayList();

  • I have a variable named cost which its type is int

  • one method will return three lists with different objects: listOne, listTwo, listThree

  • in another method I have written below code which this method will use those lists that are created in the method above.this method will be called three times for three lists above. each call for each list.

     // 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()); 

Unfortunately, instead of printing listTwo it will print listThree (if we have 4 or more lists it will print the last one)!

Is there any problem with if-else condition?

thanks

EDIT: this is my main code but its condition is like the code above: auxiliaryList in the code below is listOne or list Two or listThree respectively.

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;

        }

}

also the line which is declared with //number one shows me that before going to the if/else condition ,the element list will be set to the current list in the method.

Is there any problem with if-else condition.

Yes - the problem is that you're not using if/else, you're just using two if statements.

Change the second if to use an else and it'll be fine:

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

The problem was that if cost was 0, it would enter the first block, set cost to 3, and then go into the second block because 3 is less than 4. There was no "else" to stop that happening - the two if blocks were entirely independent.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM