簡體   English   中英

標記程序和“線程“ main”中的異常” java.lang.NullPointerException”運行時錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM