Как изменить строку чисел, пробелов и запятых на массив целых чисел - PullRequest
0 голосов
/ 18 сентября 2018

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

Например, ввод 1, 2, 3, 4, 11, 23 и выводом будет массив, содержащий те же числа, но в целочисленной форме вместо строки.

Я экспериментировал с некоторым кодом, чтобы убрать пробелы и запятые, а затем добавить числа в массив, но я просто не могу заставить свои операторы if работать. Не стесняйтесь изменять что-либо о характере ввода или что-то подобное, это очень гибко. Вот важная часть того, что у меня есть сейчас, если это поможет;

numCheck = Kd.nextLine();
        for(int i = 1; i < numCheck.length(); i++) {
            if(String.valueOf(numCheck.charAt(1)) == " ") {
                num = numCheck.charAt(0);
                System.out.println(num+"a");
                nums.add(num);  
                break;
            }
            else if((String.valueOf(numCheck.charAt(i-1))) == " "){//1 2 34
                    num = numCheck.charAt(i);
                    System.out.println(num + "b");
                    nums.add(num);  
                    i+=1;

                }
            else if(String.valueOf(numCheck.charAt(i-1)) != " ")
                {
                    numsTogether = numCheck.charAt(i-1) + "" + numCheck.charAt(i);
                    System.out.println(numsTogether + "c");
                    nums.add(Integer.parseInt(numsTogether));
                    i++;
                }   

Любая помощь приветствуется, Спасибо.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Я бы разделил запятую, окруженную необязательным пробелом, потоком, сопоставил бы каждый токен с int и затем собрал бы его с List. Как,

String numCheck = "1, 2, 3, 4, 11, 23";
List<Integer> al = Arrays.stream(numCheck.split("\\s*,\\s*"))
        .mapToInt(Integer::parseInt).boxed()
        .collect(Collectors.toList());
System.out.println(al);
0 голосов
/ 18 сентября 2018

Вы можете достичь этого в одной строке, используя потоки java 8, используя String.trim(), обрежете все пробелы и Integer.valueOf() измените строку на Integer

List<Integer> l= Arrays.stream("1, 2, 3, 4, 11, 23".split(",")).map(item->Integer.valueOf(item.trim())).collect(Collectors.toList());
    System.out.println(l);
0 голосов
/ 18 сентября 2018
  1. Разделение на запятые с использованием String.split.
  2. Для каждого элемента в массиве вызовите String.trim ().
  3. Используйте Integer.valueOf () для преобразования этого элементана номер
  4. Добавьте его в свой список.
...