求解,这段代码,编译后为什么会是空指针

OYkai 2015-03-21 04:19:21
import java.util.Scanner;


public class Solution {
public static String LCP(String[] strs) {
if (strs == null) {
return null;
}

if (strs.length == 0) {
return "";
}

String s = strs[0];
int len = s.length();

for (int i = 0; i < len; i++) {
char c = s.charAt(i);

for (int j = 1; j < strs.length; j++) {
if (strs[j].length() <= i || c != strs[j].charAt(i)) {
return s.substring(0, i);
}
}
}
return s;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
Scanner sc = new Scanner(System.in);
String[] str = new String[10000];
int n = sc.nextInt();
int i;
for(i = 0;i<n;i++)
{
str[i] = sc.next();
}
for(i = 0;i<n;i++)
{
s.LCP(str);
}
}

}

输出的结果2
ab
abd
Exception in thread "main" java.lang.NullPointerException
at Solution.LCP(Solution.java:22)
at Solution.main(Solution.java:47)
显示空指针,求解。小弟新手~~~
...全文
205 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
作业本_ 2015-03-23
  • 打赏
  • 举报
回复
strs[j].length() 循环最后一个不为空的值时,它的下一个值为null,取其length时肯定取不出来了,所以会抛出空指针。
可乐罐 2015-03-23
  • 打赏
  • 举报
回复
数组strs[],你的程序只保证了其本身不为空,但没有处理其中的某个String值为空。增加一个判空的逻辑应该就能正常运行了
悲剧的程序员 2015-03-23
  • 打赏
  • 举报
回复
很明显循环里面有问题,前面输出可以。到后面拿到数组的值是 null ,你处理 null 肯定会空指针
skgary 2015-03-23
  • 打赏
  • 举报
回复
代码贴贴好,数数22行是哪行。 不过,此类问题与其求助,不如自己静心debug是为何。
NiXingPianZhiKuang 2015-03-23
  • 打赏
  • 举报
回复
=。= 这种指向某一行的代码能好好贴么~ 没法看了

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧