gpt4 book ai didi

java - BufferedReader 给出非零退出代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:23 25 4
gpt4 key购买 nike

问题一个简单的编程question ,涉及从控制台读取 N、T 次数字并对其执行简单计算。

约束:

1≤T≤1000

2≤N≤100000000

由于 BufferedReader 通常比 Scanner 快,我使用它但程序以非零退出代码退出,而使用 Scanner 解决了这个问题。

由于两者在我的电脑上都运行良好,我怀疑这是内存问题。

问题:

  1. 我关于 BufferedReader 比 Scanner 更快的假设是否正确?
  2. BufferedReader 是否使用更多内存?如果是,是否是错误原因?

代码:

使用 BufferedReader,抛出错误

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i=0; i<T; i++) {
int N = Integer.parseInt(br.readLine());
int res = (N/2)+1;
System.out.println(res);
}
br.close();
}
}

使用返回正确输出的 Scanner 的代码:

import java.io.IOException;
import java.util.Scanner;

public class Main {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
int T = Integer.parseInt(sc.nextLine());
for (int i=0; i<T; i++) {
int N = Integer.parseInt(sc.nextLine());
int res = (N/2)+1;
System.out.println(res);
}
sc.close();
}
}

最佳答案

  1. 从 JDK 7 开始,BufferedReader 使用比 Scanner 更大的缓冲区(我认为 8192c 与 1024c),所以是的,它使用更多内存,并且可以在大输入上实现更快的运行时间。
  2. 这可能是您问题的根源(或者可能是为这个问题编写测试的人出了问题),因为我自己测试了您的 BufferedReader 代码,没有发现任何问题。

关于java - BufferedReader 给出非零退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com