使用定界符从输入中获取数字和

时间:2018-10-15 21:48:57

标签: java delimiter

我正在尝试编写一个代码,该代码采用“ 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 :(得分:3)

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创建一个缓冲读取器,以便我们可以读取输入。
  • 第二行读取输入的第一行。
  • 第三行通过使用下划线作为分隔符,将下划线前后的行分为两部分。
  • 第四行采用分割线的第二部分,其中包含用空格分隔的数字,并使用空格作为定界符来分割数字。
  • 发生所有实际动作的第五行,从数字创建流,将它们从字符串映射为整数,然后将其求和。
  • 第六行输出总和。
  • 最后几行捕获了以上各行中可能发生的任何异常。

有关更多信息,请参见:

答案 1 :(得分:0)

尝试一下

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并求和。

答案 2 :(得分:0)

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);