2013-12-21 56 views
0

所以我想提出一個簡單的小程序和IDE在這行拋出NullPointerException異常(http://puu.sh/5TJLZ.png)錯誤:total[0] = calc(coins[0],coins[1],coins[2]); 注意void setupCoins()String calc()是獨立的標籤,而不是部分該標籤。NullPointerException異常的處理,找不到

int[] coins; 
String[] total; 

void setup(){ 
    size(100,100); 
    setupCoins(); 
    total[0] = calc(coins[0],coins[1],coins[2]); 
    saveStrings("data/balance.txt",total); 
} 

void setupCoins(){ 

    String[] imports = loadStrings("balance.txt"); 
    String[] numbers = split(imports[0],','); 
    coins = int(numbers); 
} 

String calc(int gold, int silver, int copper){ 

    for(int i = 0; i <= copper; i++){ 
    if(copper>9){ 
     copper=copper-10; 
     silver++; 
    } 
    } 

    for(int i = 0; i <= silver; i++){ 
    if(silver>9){ 
     silver=silver-10; 
     gold++; 
    } 
    } 

    fill(#F5EE0A); 
    ellipse(20,20,10,10); 

    fill(#AFAFAF); 
    ellipse(20,45,10,10); 

    fill(#AA5C46); 
    ellipse(20,70,10,10); 

    fill(#000000); 
    text(gold + " Gold",30,25); 
    text(silver + " Silvers",30,50); 
    text(copper + " Coppers",30,75); 

    return gold + "," + silver + "," + copper; 

} 
+2

那麼,哪個值爲'null'?如果我猜測,'total [0]'是無效的,因爲我看不到'total'的初始化位置。 – David

+0

我沒有初始化它在第2行'String [] total;'? – CaptChilko

+0

沒關係固定 – CaptChilko

回答

1

如果您使用調試器,您可以停止該行,看看哪些對象實際上是null。如果我猜測,它可能是total[0],因爲我沒有看到你初始化的位置。

這裏聲明它:

String[] total; 

但是你從來沒有初始化它的值。該聲明行不告訴編譯器,例如,該數組應具有多少個元素。所以它沒有任何。但是當你試圖訪問一個元素:

total[0] = ... 

total[0]是一個沒有元素的數組的第一元素,因此它不存在。與此不同,在那裏你初始化一些其他陣列:

String[] imports = loadStrings("balance.txt"); 
String[] numbers = split(imports[0],','); 

的方法loadStrings()split()可能返回有效的陣列,所以importsnumbers分配有效陣列的值。 total永遠不會分配這樣的值。

+0

是的,謝謝我剛剛在Processing中忘記了我必須初始化數組中的數值。現在就開始工作吧!謝謝! – CaptChilko