2011-03-01 17 views
0

я написал такой простой код:копирование элементов списка-массива в другой массив-список

  • Я написал эту строку в конструкторе моего класса: 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?

благодаря

EDIT: это мой основной код, но его состояние, как приведенный выше код: auxiliaryList в коде ниже является listOne или list Two или listThree соответственно.

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 показывает мне, что перед выходом в если/другое условие, то элемент список будет установлен в текущий список в методе.

+0

Я не вижу условие if-else, только два, если – oliholz

+0

кажется его только печатным списком. вы можете отлаживать стоимость стоимости. Еще одна проверка может заключаться в том, что списки могут быть пустыми из-за инициализации конструктора. else переместить элемент списка инициализации = new ArrayList(); вне конструктора – Rustum

+0

стоимость стоимости ОК! но, как я сказал для Джона Скита: я проверил это, прежде чем переходить к условию if-else, список элементов будет установлен с текущим списком. Я имею в виду третий список, прежде чем переходить к условию if-else, список элементов будет установлен в третий список !!! – user472221

ответ

5

Есть ли проблемы при условии if-else.

Да - проблема в том, что вы не с помощью если/другое, вы используете только два, если заявления.

Изменение второй if, чтобы использовать else и это будет хорошо:

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

Проблема заключалась в том, что если cost был 0, то вошел бы в первый блок, установите cost 3, а затем в блок второй, потому что 3 меньше 4. Не было «другого», чтобы остановить это - два блока if были полностью независимыми.

+0

Я сделал это, но он по-прежнему печатает последний список :( – user472221

+1

@ user472221: В этом случае вам нужно дать короткую, но * полную * программу, которая демонстрирует проблему. Я исправил, что случилось с небольшой частью программу, которую вы нам показали, но в любом месте могут быть другие ошибки. –

+0

Хорошо, я также проверил, что перед тем, как перейти в условие if-else, список элементов будет установлен с помощью Текущий список. Я имею в виду третий список, прежде чем переходить к условию if-else, список элементов будет установлен на третийList !!! – user472221

Смежные вопросы