3
我需要从stdin读取整数列表,并将它们变成java.awt.Point(x,y)数组。如何将整数流转换为java.awt.Point?
输入的格式是X Y X Y X Y ...
我能做到这一点的非流路这样,
Scanner scanner = new Scanner(System.in).useDelimiter("\n");
String[] input = scanner.next().split("\\s+");
Point[] points = new Point[input.length/2];
for (int i = 0; i < input.length/2; i++) {
points[i] = new Point(Integer.parseInt(input[2*i]),
Integer.parseInt(input[2*i+1]));
}
但是我怎么也使用流呢?我被卡在map()
。
List<Point> points = Arrays.stream(scanner.next().split("\\s+"))
.map(Integer::parseInt).map(??).collect(Collectors.toList());
在此先感谢。
如果我事先知道标准输入的整数个数,它会起作用吗? – user5245796
@ user5245796如果您有整数列表,您可以跳过第一部分(将其从字符串读取并转换为整数)并直接转到第二部分。 – alfasin
我知道有多少个整数,但不知道它们是什么,直到它们从标准输入读取。猜猜我仍然需要两个步骤。谢谢。 – user5245796