我正在尝试将字符串标记化并将每个标记分配给java中的数组单元格。这是我的令牌代码,但我遇到了以下运行时错误:
Exception in thread "main" java.lang.NullPointerException
此错误出现在第10行。
任何人都可以通过一个例子帮我解决这个错误?????
#1 Scanner in = new Scanner(System.in);
#2 System.out.print("Enter your name: ");
#3 String name = in.nextLine();
#4 String a[]=null;
#5 int i=0;
#6 StringTokenizer tokenizer=new StringTokenizer(name," ");
#7 while (tokenizer.hasMoreTokens())
#8 {
#9 String token = tokenizer.nextToken();
#10 a[i]= token;
#11 i++;
#12 }
答案 0 :(得分:2)
String a[]=null;
你正在做
a[i]= token; // a is pointing to null, so a[i] will throw NPE, you need to initiate it
我认为你不知道数组的大小,所以去List
制作
String a[]=null;
到
List<String> a = new ArrayList<String>();
并替换
a[i]= token;
i++;
到
a.add(token);
答案 1 :(得分:1)
您的String-Array为null。在使用之前创建String-Array的新实例:
#1 Scanner in = new Scanner(System.in);
#2 System.out.print("Enter your name: ");
#3 String name = in.nextLine();
#4 String a[]; // removed '= null'
#5 int i=0;
#6 StringTokenizer tokenizer=new StringTokenizer(name," ");
#6.1 a[] = new String[tokenizer.countTokens()];
#7 while (tokenizer.hasMoreTokens())
#8 {
#9 String token = tokenizer.nextToken();
#10 a[i]= token;
#11 i++;
#12 }
了解更多信息,请点击此处:http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html#countTokens()
更简单的解决方案是使用数组列表而不是数组。 ArrayList的优点是,您可以向列表中添加值,而不必在开头指定固定大小,意味着大小是可变的。
示例:
Scanner in = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = in.nextLine();
List<String> list = new ArrayList<String>();
StringTokenizer tokenizer=new StringTokenizer(name," ");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
list.add(token)
}
如果您现在想知道,列表中有多少元素使用list.size()
答案 2 :(得分:0)
String a[]=null;
在处理之前已分配 null
,因此NullPointerException
!
试
String[] a=new String[100];
或者别的什么;
答案 3 :(得分:0)
因为您将null
分配给变量a
,所以当您稍后尝试使用该变量时,它将导致NullPointerException
。您需要为a
以下是您的代码中的问题:
String a[]=null
答案 4 :(得分:0)
您将数组初始化为NULL然后设置其条目...当然您会得到NullPointerException。
您必须使用成员计数初始化数组,例如String [] a = new String [10];