2012-02-26 70 views
0

當我執行以下操作時出現錯誤。Array中的Java NullPointerException

public static String text = "ng"; 
public static String[] specialConsonants = new String[4]; 
public static String[] specialConsonantsUni = new String[6]; 

public void setSpecial(){ 
    specialConsonantsUni[0] = "ං"; 
    specialConsonants[0] = "ng"; 
    specialConsonantsUni[1] = "ඃ"; 
    specialConsonants[1] = "h/g"; 
    specialConsonantsUni[2] = "ඞ"; 
    specialConsonants[2] = "N/g"; 
    specialConsonantsUni[3] = "ඍ"; 
    specialConsonants[3] = "R/g"; 
    // special characher Repaya 
    specialConsonantsUni[4] = "ර්" + "\u200D"; 
    specialConsonants[4] = "/R/g"; 
    specialConsonantsUni[5] = "ර්" + "\u200D"; 
    specialConsonants[5] = "/\\r/g"; 
} 
public static void main(String args[]){ 

    for (int i=0; i < specialConsonants.length; i++){ 
     text = text.replace(specialConsonants[i], specialConsonantsUni[i]); 
     System.out.println(text); 
    } 
} 

我試圖創建一個區域設置的應用程序。所以你可能看不到一些字體。錯誤如下。

Exception in thread "main" java.lang.NullPointerException 
at java.lang.String.replace(Unknown Source) 
at in.isuru.srtuc.Stuff.main(Stuff.java:223) 
+0

看來,你必須打電話給你'setSpecial ()'方法來初始化數組的值 – 2012-02-26 15:57:12

回答

0
public static String[] specialConsonants = new String[4]; 

public void setSpecial(){ 
    // ... 
    specialConsonants[5] = "/\\r/g"; 
} 

specialConsonants是數組大小4的存在是因爲它沒有第五指數。您還沒有調用數組初始值設定項方法。

1

specialConsonantsspecialConsonantsUni未啓動。你剛纔定義setSpecial()但不是做內容替換之前調用它

正確的做法應該是:

public static void main(String args[]){ 
    setSpecial(); 
    for (int i=0; i < specialConsonants.length; i++){ 
     text = text.replace(specialConsonants[i], specialConsonantsUni[i]); 
     System.out.println(text); 
    } 
} 

還要注意setSpecial應該是靜態在這種情況下

而且你必須改變尺寸specialConsonants至6

1

因爲specialConsonants [i]爲null。你還沒有初始化它。

它像

specialConsonants = {null,null,null,null} 

你需要讓功能setSpecial靜態然後循環之前調用它。

0

您正在向已填充的數組添加元素。數組索引從0開始,當你宣稱:

public static String[] specialConsonants = new String[4]; 

這意味着你只能使用specialConsonants[0]specialConsonants[3]

我建議你使用一個的HashMap爲了這件事。

HashMap<String, String> specialConsonants = new HashMap<String, String>(); 
.... 
specialConsonants.put("ං" , "ng"); 
.... 
0

您已將specialConsonants聲明爲長度爲4的數組,但您要爲其分配6個元素。

specialConsonants[4]有足夠的空間元素0,1,2,和3 您需要將其聲明爲specialConsonants[6],如果你想標0 - 5

然後你需要調用setSpecial()使用前陣在你的循環中。

0

數組的定義看起來不對勁,似乎你想要兩個同樣大小的數組,但你定義爲:

public static String[] specialConsonants = new String[4]; 
public static String[] specialConsonantsUni = new String[6]; 

我覺得應該是:

public static String[] specialConsonants = new String[6]; 
public static String[] specialConsonantsUni = new String[6];