Array deklarieren und über Methode aufrufen

  • Themenstarter Themenstarter Flori
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
F

Flori

Gast
Hi Leutz,

Problem mit array:


Code:
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?
 
Funktioniert :wink:

Code:
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; // WEG DAMIT!!!
public int array[][];

  public static void main(String[] args){
     haupt hauptprogrammStarten = new haupt();
      hauptprogrammStarten.start();

      hauptprogrammStarten.getarray();
  }


  public void start(){
      this.array = new int[6][4];
      array[1][1]= 40;
      array[1][2]= 100;
      System.out.println(array[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;
  }


}

D.h. der Fehler liegt woanders. (Wenn man die Klassen- und Variablennamen nicht schon als "Fehler" ansieht :roll: )
 
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?

ps: danke für die schnelle antwort^^
 
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() ;

aber hier kommt der Error was mach ich falsch?
 
was ist schiffeversenken?

wo ist getschiffearray()?

und allgemein häää?

PS. eigne dir asap einen anderen schreibstill an
Klasse GrosserAnfang
und methodenLassenSichSoVielBesserLesen();
 
haupt getPoints = new haupt();
int schiffe[][]= new int[6][4];
schiffe = getPoints.getarray() ;

sorry war falsch (war gerade wo anders)
^^des isses
 
haupt getPoints = new haupt();
int schiffe[][]= new int[6][4];

getPoints.start();

schiffe = getPoints.getarray() ;
 
ja aber später geht dass nichtmehr dass ich start() auführe. kann ich dass nicht auch ohne start() holen lassen?
 
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 😉
 
kann mir niemand kurz erklären wie ich das machen muss? das ich Anfänger bin weiß ich auch ^^
 
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.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben