繁体   English   中英

当我尝试使用 BufferedReader 读取输入时,为什么会出现 NullPointerException?

[英]Why am I getting a NullPointerException when I try to read input using BufferedReader?

我正在尝试在一行中输入多个 integer 并将所有这些整数存储到ArrayList中。 这是我的代码:

    String[] input = new String[5]; 

    ArrayList<Integer> A=new ArrayList<>(5);

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    
    try{
        while(br.readLine()!=null)
            input = br.readLine().split(" "); 
    }
    catch(Exception e){
        System.out.print(e);
    }
    
    System.out.println(Arrays.toString(input));

输入是这样的:

2 2 1 3 1

但是当我执行代码时,我在这一行得到 NullPointerException input = br.readLine().split(" "); . 我怎样才能解决这个问题?

编辑:尝试使用扫描仪接受这样的输入:

    String str="";
    Scanner s=new Scanner(System.in);

    String[] input = new String[5]; 
    ArrayList<Integer> A=new ArrayList<>(5);

    
    while(s.hasNext())
        str=s.nextLine();
    
    input=str.split(" ");
    
    System.out.println(Arrays.toString(input));  //[]

现在我的数组完全是空的!!

您有两次调用br.readLine() 如果行是 null,第一个调用将中止循环,第二个调用仍然可以读取可以是 null 的下一行(指示文件结束)。 另一个问题是第一个br.readLine()返回的行丢失了。

正确的方法是:

String line;
while ((line = br.readLine()) != null) {
    String[] input = line.split(" ");
}

输入数字之间应该正好有 1 个空格。 此外,在运行此代码时,您不应以空格开始输入或将 2 个空格连接在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM