处理,阵列中的空指针异常



我正在尝试编写一种笨拙的程序。我成功地在屏幕上生成了一些随机文本。现在,我想将网格的每个部分链接到一个字母。坐标不在ATM上,但问题是当我在区域x< = 50中单击时;y< = 50 i获得无效的值,而我的数组的元素不断绘制,所以它不能为空?

boolean clicked = false;
boolean Gen = true;
void setup() {
size(1000,1000);
textSize(64);
textAlign(CENTER);
}
void draw() {
 String [] Storage = new String[17];  
 int x1 = 5;
 int x2 = 5;
 int x3 = 5;
 int x4 = 5;

 if(Gen) {
background(#AFA3A3);
// Loop for Storing
for(int i = 0; i < 17; i = i+1) {
String a;
a = genereren();
Storage[i]=a;
}
//Loop for Reading
//First Row
for(int j = 0; j < 4; j = j+1) {
text(Storage[j], 80+(x1*10), 125);
x1 = x1 +12;
}
//Second Row
for(int k = 4; k < 8; k = k+1) {
text(Storage[k], 80+(x2*10), 250); 
x2 = x2 +12;
}
//Thrid Row
for(int c = 8; c < 12; c = c+1) {
text(Storage[c], 80+(x3*10), 375); 
x3 = x3 +12;
}
//Fourth Row
for(int o = 12; o < 16; o = o+1) {
text(Storage[o], 80+(x4*10), 500); 
x4 = x4 +12;
}
 }
Gen = false;
  for(int i=50; i<500;i=i+125){
    noFill();
    strokeWeight(5);
    rect(i,50,125,125);
    rect(i,175,125,125);
    rect(i,300,125,125);
    rect(i,425,125,125);
  }
if(clicked==true && mouseX <= 50 && mouseY <= 50) {
text(Storage[1], 500,500);  
}
Reset();
}
//draw
public String genereren() {
String alfabet = "abcdefghijklmnopqrstuvwxyz";
float r = random(24);
if(r < 1) {
  r = r+1;
}
int d = int(r);
String EersteLetter;
EersteLetter = alfabet.substring(d-1,d);
return EersteLetter;
}
public void Store() {
}
public void mouseClicked() {
  clicked = true;
}
public void Reset() {
  clicked = false;
}

发布代码时,请使用理智的格式和标准命名约定(存储应该是存储等)。

无论如何,您正在初始化绘制功能中的存储变量,这意味着您每秒创建了60倍的新空数组。但是,您只会在Gen为True时才填充该数组,这仅发生在第一次绘制()。

这意味着在稍后呼叫draw()函数中,存储为空白,这意味着它包含所有空值。然后,当您单击左上角时,它将null值传递到text()函数中,这会导致NPE。

大多数处理草图都会呼叫Boundkfork()作为draw()函数中的第一行。添加它,您会发现您实际上并未在随后呼叫的draw()函数中填充数组。您可能想在setup()函数中填充它,然后每次draw()绘制它。

相关内容

  • 没有找到相关文章

最新更新