用Java有没有更快的方法呢?
是。扫描仪相当慢(至少根据我的经验)。
如果您不需要验证输入,建议您将流包装在BufferedInputStream中,并使用类似
String.split/的内容
Integer.parseInt。
比较一下:
使用此代码读取 17兆字节 (4233600个数字)
Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) sum += scanner.nextInt();
我的机器花了 3.3秒 。而这个片段
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));String line;while ((line = bi.readLine()) != null) for (String numStr: line.split("\s")) sum += Integer.parseInt(numStr);
花了 0.7秒 。
通过进一步弄乱代码(
line使用
String.indexOf/
反复进行
String.substring),您可以很容易地将其降低到大约0.1秒,但是我想我已经回答了您的问题,并且我不想将其变成一些代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)