代码在我的计算机上运行良好,但在“hackerearth”平台上在线运行时出现 NullPointerException

Posted

技术标签:

【中文标题】代码在我的计算机上运行良好,但在“hackerearth”平台上在线运行时出现 NullPointerException【英文标题】:Code running fine in my computer but NullPointerException when running online on platforn of "hackerearth" 【发布时间】:2020-02-11 06:10:13 【问题描述】:

我在hackerearth.com 上尝试了一些问题,在一个程序中,NullPointerException 即将到来,但是当我在我的计算机上运行该代码时,它运行良好。我已经阅读了很多关于空指针异常的内容,但无法理解为什么会出现该异常。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String arr2[] = new String[n];
for (int i = 0; i < n; i++)

    String s = br.readLine();
    String arr[] = s.trim().split("\\s+");
    int arr1[] = new int[arr.length];

这是异常发生的部分 --> String arr[]=s.trim().split("\\s+");

【问题讨论】:

s 可能为 null,因为 br.ReadLine() 从无法访问的输入流中读取或该流位于 EOF 那么我能做些什么来避免这种情况,你能建议吗?,当我必须从单行获取整数输出时,我多次使用 br.readLine (),中间有空格,但它从未显示任何例外,只是在这种情况下。 您可以检查if (s != null),在String arr[]... int arr1[]... 行之前,这都可能是由关闭的连接引起的。我认为这是 c#,但也许是 java ?请添加相应的标签! 它在java中,所以每次我必须使用readLine()时,我必须检查一下? 我会这样做的,是的。 【参考方案1】:

只是总结一下我的cmets。代码如下所示:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String arr2[] = new String[n];
for (int i = 0; i < n; i++)

    String s = br.readLine();
    if (s != null)
    
        String arr[] = s.trim().split("\\s+");
        int arr1[] = new int[arr.length];
        // do something with arr1
    
    else
    
        // maybe leave the loop with break;
    

【讨论】:

以上是关于代码在我的计算机上运行良好,但在“hackerearth”平台上在线运行时出现 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Friends 计算机上运行带有 ms 访问数据库的 java 应用程序?它在我的电脑上运行良好

vb.net 应用程序不能在其他计算机上运行?

Flask-Login:在本地机器上不起作用,但在托管上很好

JavaDB 出现端口连接错误。

Node.js 应用程序在本地主机上运行良好,但在 Heroku 上部署时显示错误

PHP cURL 在本地主机上工作但在服务器上不工作