我在线程“main”java中遇到错误异常。java上的lang.NullPointerException。lang.StringBuffer<初始化>(未知源)
在一个包含n个字符串的字符串数组中,我必须从给定的字符串中选择Palin对。用于输入的ex 3. 工商管理学士 神甫 神甫 输出=2 我做错了什么
import java.util.*;
class Test {
public static void main(String args[]) {
int i,j,k=0;
Scanner h=new Scanner(System.in);
int n=h.nextInt();
String a[]=new String[n];
for(i=0;i<n;i++) {
if(a[i]!="") {
String rev = (new StringBuffer(a[i])).reverse().toString();
for(j=i+1;j<n;j++) {
if(rev.equals(a[j])) {
k++;
a[j]="";
}
}
}
}
h.close();
}
}
# 1 楼答案
您正在创建字符串数组,但从未初始化其成员
成员的默认值为空
因此,当调用
new StringBuffer(a[i])
时,传递的是空值您可以通过以下方式避免这种情况:
顺便说一下,您正在尝试使用相等运算符
!=
检查空字符串。这将检查引用是否不同,而不是它们指向的字符串对象是否包含不同的字符串。您将希望使用以下选项之一进行检查:或
或者,如果您正在使用谷歌的番石榴图书馆:
# 2 楼答案
最有可能的情况是,您希望从控制台阅读您没有阅读的单词。我建议你用扫描仪。nextLine()