Использование разделителя для получения суммы чисел из ввода - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь написать код, который принимает входные данные из этой формы "Piet van Gogh_5 6 7 4 5 6" и дает мне сумму целых чисел из этих входных данных.Кажется, у меня есть проблема с использованием разделителя, так как первое целое число идет после _, а следующие целые числа идут после пробела.

Вот код, который я написал до сих пор:

void firstline() {
    Scanner in = new Scanner(System.in);
    out.printf("");
    String Line = in.nextLine();
    Scanner line = new Scanner(Line);

    int somcijfers = 0;
    while(line.hasNext()) {
        somcijfers += line.nextInt();
    }

    out.printf("%d", somcijfers);       
}

void start() {
    firstline();
}

Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
    String line = br.readLine();
    String[] splitLine = line.split("_");
    String[] numbers = splitLine[1].split(" ");
    Integer sum = Stream.of(numbers).mapToInt(Integer::valueOf).sum();
    System.out.println(sum);
} catch (IOException e) {
    e.printStackTrace();
}

Приведенный выше код выполняет следующие действия:

  • В первой строке создается буферизованный считыватель с использованием System.in, поэтому мы можем прочитать ввод.
  • Во второй строке указанопервая строка ввода.
  • Третья строка разбивает строку на две части до и после подчеркивания, используя подчеркивание в качестве разделителя.
  • Четвертая строка занимает вторую частьразделительной линии, которая содержит числа, разделенные пробелами, и разбивает числа, используя пробел в качестве разделителя.
  • Пятая строка, где происходит все действительное действие, создает поток из чисел,отображает их из строк в целые числа, а затем суммирует их.
  • Шестая строка выводит сумму.
  • Последние несколько строк фиксируют любые исключения, которые могут возникнуть в приведенных выше строках.

Для получения дополнительной информации см .:

0 голосов
/ 16 октября 2018
String s = "Piet van Gogh_5 6 7 4 5 6";
String vals = s.substring(s.lastIndexOf('_') + 1);
String[] nums = vals.split(" ");
Streams.of(nums).mapToInt(Integer::parseInt).forEach(System.out::println);
0 голосов
/ 16 октября 2018

Попробуйте это

String s = "Piet van Gogh_5 6 7 4 5 6";
String vals = s.substring(s.lastIndexOf('_') + 1);
String[] nums = vals.split(" ");

nums будет иметь числа в формате String, вы можете перебирать этот массив, преобразовывая каждое значение в int и суммируя их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...