![](/img/trans.png)
[英]Exception in thread “main” java.lang.NullPointerException Error At Java
[英]tokenizer and “Exception in thread ”main“ java.lang.NullPointerException” runtime error
我正在嘗試標記字符串並將每個標記分配給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 }
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);
您的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()
String a[]=null;
在處理之前分配了null
,所以NullPointerException
!
嘗試
String[] a=new String[100];
或者其他的東西;
因為您為變量a
分配了null
,所以當您稍后嘗試使用該變量時,它將導致NullPointerException
。 你需要一些有意義分配到a
這是您的代碼中的問題:
String a[]=null
您將數組初始化為NULL,然后設置其條目...當然,您會得到NullPointerException。
您必須使用成員計數來初始化數組,例如String [] a = new String [10];。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.