返回信息流我在做微软的online。现在超时了。用的是Scanner读入。题目里面确实有这么一句话:
Huge input. Slow IO method such as Scanner in Java may get TLE.
然后现在用BufferedReader来做。不太会弄。
网上查了半天。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = br.read();
这里的问题是输出的是ascii码。当然也可以readline()然后再转成整数,可是然后最大的问题是:
我们的输入往往是一行里面有很多的整数:1 25 38 这样的。这可怎么弄呀。求指点。
这是一条镜像帖。来源:北邮人论坛 / java / #48313同步于 2016/3/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求指点做竞赛题怎么用java读入数据。
chengl
2016/3/8镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
String line = in.readLine();
String[] eachNumber = line.split(" ");
int[] numbers = new int[eachNumber.length];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.parse(eachNumber[i]);
}
用这个
StreamTokenizer in = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
【 在 chengl 的大作中提到: 】
: 我在做微软的online。现在超时了。用的是Scanner读入。题目里面确实有这么一句话:
: Huge input. Slow IO method such as Scanner in Java may get TLE.
: 然后现在用BufferedReader来做。不太会弄。
: ...................
为什么不是 numbers[i] = Integer.parseInt(eachNumber[i]);
【 在 icyfox 的大作中提到: 】
: String line = in.readLine();
: String[] eachNumber = line.split(" ");
: int[] numbers = new int[eachNumber.length];
: ...................
写错了..唉没有编译器检查就不记得了
【 在 iamluo (昵称是什么) 的大作中提到: 】
: 为什么不是 numbers[i] = Integer.parseInt(eachNumber[i]);
谢谢狐师兄。
【 在 icyfox 的大作中提到: 】
: String line = in.readLine();
: String[] eachNumber = line.split(" ");
: int[] numbers = new int[eachNumber.length];
: ...................
谢谢
【 在 youmi 的大作中提到: 】
: 用这个
: [code=java]
: StreamTokenizer in = new StreamTokenizer(new BufferedReader(
: ...................
嗯
不过要不是特别复杂可以拿C写也行
读着快
楼下用Tokenizer那个应该更好吧
【 在 chengl (import data.engineer.offers;) 的大作中提到: 】
: 师兄你做微软的online的题的时候就是这样读入数据的是吧?