2017-01-18 7 views
0

Так я везу входной файл, содержащий строки, как:Как передать в ArrayList строк и преобразовать каждый отдельный массив в собственную строку (java)?

birthday54 
happy75 
nifty43 
bob1994 

Эти строки являются частью ArrayList. Я хочу передать этот ArrayList с помощью метода, который может принимать каждую отдельную строку и распечатывать ее отдельно. Итак, в основном, как мне взять ArrayList строк, отделить каждую отдельную строку и затем распечатать эти строки? В моем коде мое условие while while истинно, поэтому у меня есть бесконечный цикл, идущий здесь, и он выводит только первую строку «birthday54» бесконечно. Я не знаю, какое условие я должен иметь для цикла while. Или, если у меня даже есть цикл while. Вот мой код:

public static void convArrListToString(ArrayList<String> strings){ 
      int i=0; 
      while (true){ 
       String[] convert = strings.toArray(new String[i]); 
       System.out.println(convert[i]); 
       } 
      } 
    public static void main(String [] args) 
{ 
    Scanner in = new Scanner(new File("myinputcases.txt")); 
    ArrayList<String> list = new ArrayList<String>(); 
    while (in.hasNext()) 
     list.add(in.next()); 

    convArrListToString(list); 
+0

Что вы делаете, просто сумасшедший ... –

+0

lol я знаю. моя основная цель избыточно преобразовать этот arraylist в строки, так что я могу использовать строки для преобразования их в их эквивалент ascii, но я уже понял, что часть. – user7428413

+0

* как взять ArrayList строк, отделить каждую отдельную строку ... * Список строк уже разделен. Непонятно, что вы пытаетесь сделать. – shmosel

ответ

0

Изменить это:

while (true) { 
    String[] convert = strings.toArray(new String[i]); 
    System.out.println(convert[i]); 
} 

Для этого:

for (String strTemp : strings) { 
    System.out.println(strTemp); 
} 

Это только выводит данные "birthday54", потому что вы не увеличиваете свой i. Вы можете увеличить его, поставив i++ в конце вашего оператора while, но вы получите сообщение об ошибке, если вы сделаете это после того, как вы выполните все ваши значения в ArrayList. Посмотрите на мой ответ, вы можете просто использовать цикл for для повторения этого номера ArrayList.

+3

Несомненно, вы имеете в виду 'strings.forEach (System.out :: println);'. – shmosel

+0

@shmosel да, это совсем коротко, чем мой ответ. спасибо :) – msagala25

+0

hey @shmosel, как я могу взять те строки, которые я только что напечатал (используя ваш код), и передать их через другую функцию? – user7428413

0

Людей, который больно смотреть, Попробуйте это вместо вашего времени цикла:

for (String s : strings) { 
    System.out.println(s); 
} 

Нет, пока цикл необходим, список массива представляет собой объект коллекции, который является классом контейнера в Java, который может повторяться по объект, а также по индексу, поэтому он должен вытащить каждую строку из 1 на 1, пока она не приблизится к концу списка массивов.

Resource on collections in java.

1

Я считаю, что вам нужно всего лишь итерируем ArrayList и использовать метод «Get», чтобы получить каждую строку как:

for(int i = 0 ; i < list.size(); i++){ 
    System.out.println(list.get(i)); 
} 

или вы можете использовать для каждого цикла

for(String s : list){ 
System.out.println(s); 
} 

ура!

+0

@ scary-wombat спасибо! – manuel