Обработка NullPointerException 3.0

Я кодирую уже несколько недель, и я застрял на этом исключении нулевого указателя.

Это дает мне следующую ошибку:

java.lang.NullPointerException  
at processing.core.PGraphics.image(PGraphics.java:3768)     
at processing.core.PApplet.image(PApplet.java:12175)    
at beginfase.tekenBeginscherm(beginfase.java:126)   
at beginfase.draw(beginfase.java:51)    
at processing.core.PApplet.handleDraw(PApplet.java:2412)    
at processing.awt.PSurfaceAWT.callDraw(PSurfaceAWT.java:1540)    
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)

он отмечает эту строку кода: image(kaarten[r],50,50);

   String[] kaart = { 
"Aclubs.png", 
"2clubs.png", 
"3clubs.png",
"4clubs.png",
"5clubs.png",
"6clubs.png",
"7clubs.png",
"8clubs.png",
"9clubs.png",
"10clubs.png",
"Jclubs.png",
"Qclubs.png",
"Kclubs.png",
};

PImage[] kaarten = new PImage [kaart.length];

void settings() {
  size(round(displayWidth * 0.9), round(displayHeight * 0.9));
}

void setup() {
  laadBeginscherm();
 // schudKaarten();
 }



void draw() {
  tekenBeginscherm();
 // schudKaarten();
  // println(mouseX);
  //println(mouseY);
}

Есть немного моего кода, я знаю, что это, вероятно, беспорядок и очень плохо, но я не могу найти, что ошибка nullpointerexception. Пожалуйста помочь.

Да, я теперь добавил 10clubs.формат PNG

Это код, который я использую для загрузки образа.

if (scherm == 3) {
        background(0, 148, 0);
        for (int g = 0; g < 12000; g = g+round((displayWidth * 0.9))/12) {
          int r = int (random(kaarten.length));
          println(r);
          image(kaarten[r],g+25,50);
        }      
      }

РЕДАКТИРОВАТЬ:
Хорошо, я сделал меньшую (мини) версию ошибки. Он использует только 1 карту, но это только для примера, так что вы можете добавить.png себя

    String[] kaart = { 
  "Aclubs.png", 
};


PImage[] kaarten = new PImage [kaart.length];

void setup() {
  kaart = loadImage("Aclubs.png");
}

void draw() {
  tekenBeginscherm();
}
void tekenBeginscherm() {
  if (keyPressed == true ) {
    background(0, 148, 0);
    for (int g = 0; g < 12000; g = g+round((displayWidth * 0.9))/12) {
      int r = int (random(kaarten.length));
      println(r);
      image(kaarten[r], 50, 50);
    }
  }
}

Если я попытаюсь добавить это: kaart = loadImage("Aclubs.png");в setup()
Вместо этого программа выдаст мне эту ошибку:

Тип несоответствия, » обработка.ядро.PImage «не совпадает с» java.ленг.Строка[]»

1 ответ

  1. При загрузке изображения необходимо убедиться в нескольких вещах:

    • Убедитесь, что файлы изображений добавлены в эскиз. Они должны находиться dataв каталоге внутри папки эскиза. Убедитесь, что они написаны правильно.

    • Убедитесь, что вы вызываете loadImage()функцию, прежде чем пытаться вызвать image()функцию.

    Из ссылки, вот небольшой пример, который показывает, как загрузить и отобразить изображение:

    PImage img;
    
    void setup() {
      img = loadImage("laDefense.jpg");
    }
    
    void draw() {
      image(img, 0, 0);
    }
    

    Я предполагаю , что вы забыли позвонитьloadImage(), что означает , что ваша переменная образа (в вашем случае, индекс массива)null, которая вызовет NullPointerExceptionпри вызове image()функции.

    Если у вас все еще есть проблемы, пожалуйста, сузьте вашу проблему до небольшого примера, как этот.

    Edit: в ответ на отредактированный вопрос:

    Если я попытаюсь добавить это: kaart = loadImage («Aclubs.png»); в setup() программа выдаст мне эту ошибку вместо этого:

    Тип несоответствия, » обработка.ядро.PImage «не совпадает с» java.ленг.Строка[]»

    Необходимо выполнить цикл по каждому индексу в массиве и вызвать loadImage()загрузку изображения в каждый индекс.