返回信息流有多行数据,每行数据的个数不固定,输出每行数据的最大值。
有没有一种不用readline再循环比较的方法呢?比如对于当前行,读一个,判断一个那种,读到行尾就自然输出了?[ema0]
示例数据:
1 2 3 4 5
8 3
10 19 24
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #97904同步于 2019/4/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
【问题】Scanner识别行——读取问题
sunny1moon
2019/4/10镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
写个while循环,当hasNextLine为ture时就用nextLine读取一行然后用split转换成数组,然后输出最大值,这样应该是读一行输出一次,不知道对不对
试试这个。或许没有你想象的那么简练。毕竟java。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.regex.Pattern;
public class ReadNums {
public static final Pattern SPACES = Pattern.compile("\\s+");
public static int[] toArrayOfInts(String[] arrayOfStrs) {
return Arrays.stream(arrayOfStrs).mapToInt(Integer::parseInt).toArray();
}
public static void main(String[] args) throws Exception {
int[][] arraysOfNums;
try (var br = new BufferedReader(new InputStreamReader(System.in))) {
arraysOfNums = br.lines() // "1 2 3 4"
.map(SPACES::split) // ["1", "2", "3", "4"]
.map(ReadNums::toArrayOfInts) // [1, 2, 3, 4]
.toArray(int[][]::new);
}
for (var row : arraysOfNums) {
boolean first = true;
for (var num : row) {
if (first) {
first = false;
} else {
System.out.print(" ");
}
System.out.printf("%d", num);
}
System.out.println();
}
}
}
【 在 sunny1moon 的大作中提到: 】
: 有多行数据,每行数据的个数不固定,输出每行数据的最大值。
: 有没有一种不用readline再循环比较的方法呢?比如对于当前行,读一个,判断一个那种,读到行尾就自然输出了?
: 示例数据:
: ...................
一般测试都是用jdk8吧
【 在 nuanyangyang 的大作中提到: 】
: 试试这个。或许没有你想象的那么简练。毕竟java。
: [code=java]
: import java.io.BufferedReader;
: ...................
谁管呢,毕竟我是在介绍新技术。
不过Stream在java 8就有了。把var换成具体类型就能用。
【 在 Kniost33 的大作中提到: 】
: 一般测试都是用jdk8吧
好的 谢谢哈~
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 试试这个。或许没有你想象的那么简练。毕竟java。
: [code=java]
: import java.io.BufferedReader;
: ...................