# Array deklarieren und über Methode aufrufen



## Flori (20. Feb 2007)

Hi Leutz,

Problem mit array:



```
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?


----------



## Marco13 (20. Feb 2007)

Funktioniert :wink:


```
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: )


----------



## Gast (20. Feb 2007)

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^^


----------



## Marco13 (20. Feb 2007)

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.


----------



## Gast (20. Feb 2007)

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?


----------



## Gast (20. Feb 2007)

was ist schiffeversenken?

wo ist getschiffearray()?

und allgemein häää?

PS. eigne dir asap einen anderen schreibstill an
Klasse GrosserAnfang
und methodenLassenSichSoVielBesserLesen();


----------



## Gast (20. Feb 2007)

haupt getPoints = new haupt();
int schiffe[][]= new int[6][4];
schiffe = getPoints.getarray() ; 

sorry war falsch (war gerade wo anders)
^^des isses


----------



## Gast (20. Feb 2007)

haupt getPoints = new haupt();
int schiffe[][]= new int[6][4];

getPoints.start();

schiffe = getPoints.getarray() ;


----------



## Gast (20. Feb 2007)

ja aber später geht dass nichtmehr dass ich start() auführe. kann ich dass nicht auch ohne start() holen lassen?


----------



## Gelöschtes Mitglied 5909 (20. Feb 2007)

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


----------



## Gast (20. Feb 2007)

kann mir niemand kurz erklären wie ich das machen muss? das ich Anfänger bin weiß ich auch ^^


----------



## Der Müde Joe (20. Feb 2007)

das Buch lesen
http://www.galileocomputing.de/openbook/javainsel6/


----------



## Marco13 (20. Feb 2007)

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.


----------



## Gast (20. Feb 2007)

habs in der zwischenzeit selber herausgefunden danke


----------

