2016-03-22 1 views
1

Это оригинальный запрос:разделителями Список Целые

Написать программу, которая получает через запятую строки целых чисел (например, «4,8,16,32 ...») от пользователя в командной строке и затем преобразует String в ArrayList из целых чисел (используя класс-оболочку) с каждым элементом, содержащим одно из входных целых чисел в последовательности. Наконец, используйте цикл for для вывода целых чисел в командную строку, каждая из которых находится в отдельной строке.

import java.util.Scanner; 
import java.util.ArrayList; 

public class Parser { 


    public static void main(String[] args) { 

     Scanner scnr = new Scanner(System.in); 

     ArrayList<String> myInts = new ArrayList<String>(); 
     String integers = ""; 

     System.out.print("Enter a list of delimited integers: "); 
     integers = scnr.nextLine(); 

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

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

+0

Используйте 'Integer.parseInt()' для преобразования из 'String' to' Integer' ... – brso05

+1

Используйте метод split для строки и цикл через результаты добавили анализируемые целые числа (Integer.parseInt (значение)) в ваш ArrayList из целых чисел. – ManoDestra

+0

Вы печатаете весь список. Вы должны перебирать каждый элемент и печатать каждый в цикле. –

ответ

2

Во-первых, вы можете преобразовать входную строку в String[], используя метод split: input.split(","). Это даст вам массив, в котором элементы являются строками, которые были разделены ",".

А затем, чтобы преобразовать строку в Integer оболочку, вы можете использовать:

  1. Integer i = Integer.valueOf(str);
  2. Integer i = Integer.parseInt(str)
0

myInts пуст, ваши данные в целых числах.
Я полагаю, что вы ищете о fonction: раскол (из строки)

3

Самый простой способ, чтобы преобразовать эту строку будет разбить его в соответствии с запятой и применить Integer.valueOf к каждому элементу:

List<Integer> converted = Arrays.stream(integers.split(",")) 
           .map(Integer::valueOf) 
           .collect(Collectors.toList()); 

Печать их, если вы должны использовать for цикл, будет просто означать зацикливание над ними и печать каждого из них в отдельности:

for (Integer i : converted) { 
    System.out.println(i); 
} 

Если вы не абсолютно необходимо использовать for цикл, это также может быть сделано гораздо более элегантно с потоками, даже без сохранения во временном списке:

Arrays.stream(integers.split(",")) 
     .map(Integer::valueOf) 
     .forEach(System.out::println); 
Смежные вопросы