Как мне выполнить программу ArrayList с циклом, который отображает каждый индекс списка по одному? - PullRequest
1 голос
/ 21 ноября 2011

Как мне выполнить программу, если массив / список [idk, какой еще использовать, но мне сказали, что с ArrayList мне не нужно предварительно определять размер, поэтому я буду его использовать]будет продолжать цикл, и значения будут наблюдаться или отображаться по одному за раз?

Я пытался использовать цикл while, но в основном все, что я получал, - это ошибки при запросе массива или сообщении о несовместимых типах или о чем-то подобном.

while (myList!=0) //Can I actually do this? Because I didn't define a data type for my list.

if myList(0).equals ("A") //problem here is that I need to go through every index of the list. I've tried to use a counter like if myList(counter).equals ("A") but it says its incompatible types?
{
//print something.
} else if myList(0).equals ("B")
{
//print something
}

Я знаю, что вопрос немного запутанный, но код [даже если он полон ошибок] - именно то, что я хочу сделать.Я просто не знаю, как это применить.Любая помощь, ответы, ссылки, статьи, учебные пособия будут высоко оценены.

Ответы [ 4 ]

4 голосов
/ 21 ноября 2011

Похоже, вы думаете об этом с точки зрения C-указателя.Список всегда указывает на Список, никогда на Узел или что-то в этом роде.Итак, вы бы сделали что-то вроде этого:

for(String s : myList) {
    if("A".equals(s)) {

    } else if("B".equals(s)) {

    }
}
2 голосов
/ 21 ноября 2011

Если вы используете ArrayList или какую-либо другую реализацию интерфейса List, у вас не будет прямого доступа к данным с использованием скобок или скобок, что означает, что говорить что-то вроде myList [0] бессмысленно.Вместо этого вам нужно использовать метод get, а затем сравнить его с любыми необходимыми значениями.Вы сможете получить длину своего списка с помощью метода .size (), поэтому ваш код будет выглядеть примерно так

for(int i=0; i<myList.size(); i++)
{
  if(myList.get(i).equals("A"))
   {
     //print something
   }
  else if(myList.get(i).equals("B"))
   {
     //print something else
   }
  else
   {
      //print something still different
   }
 }

Ответ, который дал световой кодер, представляет собой более компактный синтаксис для циклического выполненияArrayLists и другие списки в Java, что приводит к получению более приятного кода, но именно так вы бы сделали это без синтаксического сахара.

0 голосов
/ 21 ноября 2011

Это должно работать и довольно близко к тому, что вы пробовали до сих пор:

int counter = 0;
while(counter < myList.size()) {
  if (myList.get(counter).equals("A") )
  {
  //print something.
  } else if (myList.get(counter).equals("B"))
  {
  //print something
  }
  counter = counter + 1;
}

Обратите внимание, что это не предпочтительный способ циклического перемещения по списку, см. Ответ на кодировщик свечения за чем-то более элегантным.

0 голосов
/ 21 ноября 2011

Подходит ли этот ответ для вашего вопроса?

for (int i = 0; i < myList.length; i++) {
    if ("A".equals(myList[i])) {
        // print something.
    } else if ("B".equals(myList[i])) {
        // print something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...