代码在我的计算机上运行良好,但在“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 应用程序?它在我的电脑上运行良好
Flask-Login:在本地机器上不起作用,但在托管上很好