我正在尝试编写一个代码,该代码采用“ 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();
}
任何帮助将不胜感激。
答案 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();
}
上面的代码执行以下操作:
有关更多信息,请参见:
答案 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);