所以我正在创建一个简单的小程序,IDE在此行抛出NullPointerException(http://puu.sh/5TJLZ.png):total[0] = calc(coins[0],coins[1],coins[2]);
请注意,void setupCoins()
和String calc()
位于不同的标签中,而不是标签的一部分。
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;
}
答案 0 :(得分:1)
如果使用调试器,则可以在该行上停止并查看实际上null
的对象。如果我猜,它可能是total[0]
,因为我没有看到你在哪里初始化。
您在此声明:
String[] total;
但是你从来没有将它初始化为一个值。该声明行不告诉编译器,例如,数组应该有多少个元素。所以它没有任何。但是你试着访问一个元素:
total[0] = ...
total[0]
是数组中没有元素的第一个元素,因此它不存在。将此与初始化其他阵列的位置进行对比:
String[] imports = loadStrings("balance.txt");
String[] numbers = split(imports[0],',');
方法loadStrings()
和split()
可能会返回有效数组,因此会为imports
和numbers
分配有效数组的值。永远不会为total
分配这样的值。