在具有“n”个字符串的字符串数组“a”中,我必须从给定的字符串中选择佩林对。对于 ex 作为输入 3个 bba abb abb 输出=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();
}
}
最佳答案
您正在创建一个字符串数组,但从未初始化其成员。
成员的默认值为空。
因此,当您调用 new StringBuffer(a[i])
时,您将传递一个空值。
您可以通过以下方式避免这种情况:
- 用一些东西填充数组。
- 除了现有的空字符串检查之外,还要检查 null。
顺便说一句,您正在尝试使用相等运算符 !=
检查空字符串。这将检查引用是否不同,而不是它们指向的 String 对象是否包含不同的字符串。您需要使用以下任一方式进行检查:
(null != a[i]) && ! a[i].isEmpty()
或
! "".equals( a[i] )
或者,如果您使用的是 Google 的 Guava 库:
! Strings.isNullOrEmpty( a[i] )
关于java - 我收到错误 - 线程 "main"java.lang.NullPointerException 中的异常 java.lang.StringBuffer.<init>(未知来源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618987/