Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
package test;
import java.awt.geom.Line2D;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import test.zeichne;
public class haupt{
JLabel schriftZug;
Graphics g;
public int array[][];
public static void main(String[] args){
haupt hauptprogrammStarten = new haupt();
hauptprogrammStarten.start();
}
public void start(){
this.array = new int[6][4];
array[1][1]= 40;
array[1][2]= 100;
System.out.println(schiffe[1][1]); // Ausgabe : 40
zeichne neuezeichnung = new zeichne();
neuezeichnung.main();
}
public int[][] getarray(){
System.out.println(array[1][1]+" im getarray"); //Error: Exception in thread "AWT-EventQueue-0"
// java.lang.NullPointerException
return array;
}
}
also: ich starte das Programm im main und dannach in "public void start()" dort soll es das array das ich oben deklariert habe an "array[1][1]" und "array[1][2]" einen Wert zuweißen (später auch mehrere). dann startet es die Klasse "neuezeichnung" die Klasse muss ( über "public int[][] getarray()" ) auf das array zugreifen.
warum kommt da aber der error?
liegt es vll. daran das ich beim holen des arrays nicht "public void start()" aufrufe? d.h. ich rufe nur "public int[][] getarray()" auf (hier würde das noch gehen dass ich start() mit aufrufe aber später nichtmehr)
muss ich das array erst irgendwie speichern oder mach ich was anderes falsch?
Nun - WO du getarray aufrufst, konnte man an deinem Code ja nicht sehen (deswegen das halb-ironische "Funktioniert"). Wenn du es aufrufst, BEVOR du (einmal) "start" aufgerufen hast, liefert es null zurück. Das heißt aber nicht, dass du vor jedem aufruf von getarray such start aufrufen musst.
Ich will ja von diesem main, start() aufrufen und dann durchläufts ja einmal die Stelle ander ich dem array die Werte 40 und 100 übergeb.
in der Methode start() ruf ich dann dannach die Klasse zeichne auf. nun will ich in der Klasse zeichnen das array von meinem Hauptprogramm (haupt) holen um damit zu arbeiten.
ich hab das mit dem Code in der Klasse "zeichne" versucht:
schiffeversenken getPoints = new schiffeversenken();
int schiffe[][]= new int[6][4];
schiffe = getPoints.getschiffearray() ;
du rufst den ctor auf aber statt einen sinnvollen zu implementieren rufst du den default auf, machst dir aber gleichzeitig ne start methode um zu initialisieren.
Meine Empfehlung: Grundlagen lernen
Die Alternative: Poste ein Stück code, das man mit Copy&Paste in TextPad einfügen und sofort Compilieren und starten kann, in dem der Fehler auftritt. Dann wird man dir sagen, wie du den Fehler beheben kannst. Aber vor anderen Fehlern schützt diese Vorgehensweise natürlich weit weniger, als das, was Der Müde Joe vorgeschlagen hat.