Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Willi

Unregistered

1

Saturday, April 24th 2010, 1:35pm

Java: Wie kann ich auf ein Array zugreifen, das in einer anderen Methode erstellt wurde?

Hallo,

ich habe folgendes Problem:

In einer Methode "initialize" habe ich ein Array erstellt und mit Obekten der Klasse "Sektor" bestückt, sowie initialisiert.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 class ForestFire
{

   void initialize()
  {
   Sektor[][] forest = new Sektor[10][10];
  
   for ( int x=0; x <= 9; x++ )
   {

  for ( int y=0; y <= 9; y++ )
  {

  forest[x][y] = new Sektor();

  forest[x][y].initialize();

  }
} 
[....] 



Nun brauche ich dieses fertige Array in einer anderen Methode, aber immer noch in der selben Klasse "ForestFire", um es weiter zu bearbeiten.

Genau das bekomme ich nicht hin :( So wie es aussieht, ist forest wohl nur innerhalb der Methode gültig. Muss ich das Array jetzt kopieren oder wie ist das?

Es wäre sehr nett, wenn ihr mir weiterhelfen könntet :-)

Viele Grüße,
Willi

  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

2

Saturday, April 24th 2010, 1:41pm

Das ist doch genau das wozu Klassenvariablen da sind...

Source code

1
2
3
4
5
6
7
8
9
10
11
class ForestFire
{
  private Sector[][] forest;

  private void initialize()
  {
    forest = new Sector[10][10];
    [...]
  }
 
}


EDIT: "private" eingefügt.

EDIT2: Ach ja, und ich soll dir sagen, Sector schreibt man mit c. ;)

This post has been edited 2 times, last edit by "Schokoholic" (Apr 24th 2010, 1:44pm)


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

3

Saturday, April 24th 2010, 1:52pm

Wenn du das Array einmalig pro Intanz benötigst nimmst du ne Instanzvarialble. Wenn du es einmal pro Klasse brauchst, ne Klassenvariable. Und wenn du es mehrfach brauchst bzw. die Methode das Array einfach zurück geben wirst, dann gib es mit return zurück

private Sector[][] init(){
Sector[][] sec = new Sector[...][...];
//...
return sec;
}
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

Willi

Unregistered

4

Saturday, April 24th 2010, 9:53pm

Vielen Dank für eure Hilfe :-)

jasper

Trainee

  • "jasper" is male

Posts: 35

Date of registration: Sep 28th 2009

Location: Hannover

5

Sunday, April 25th 2010, 2:20pm

Selber Aufgabenteil, andere Frage

Ich hangel mich auch an den gegebenen Tipps auf dem Aufgabenbaltt lang und bin momentan am selben Punkt.
@Willi: Passiert bei dem Teil so schon was? Ich habe wie in der Aufgabe beschrieben noch ein outputState() mit drin und es ansonsten fast genauso (bis auf Einrückung und Variablennamen).
Ausführen kann ich das so aber nicht, um es zu testen - ist das normal? Ich hatte auch probiert, es main zu nennen, dann sollte es eigentlich gehen, ich scheine also doch was falsch gemacht zu haben.

Edit: Nun funktioniert's, muss mich wohl erst noch dran gewöhnen wie ich schnell Zwischenergebnisse testen kann.

This post has been edited 2 times, last edit by "jasper" (Apr 25th 2010, 2:26pm)


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

6

Sunday, April 25th 2010, 2:36pm

RE: Selber Aufgabenteil, andere Frage


Edit: Nun funktioniert's, muss mich wohl erst noch dran gewöhnen wie ich schnell Zwischenergebnisse testen kann.
Auf der Konsole mit javac und java? Pfeiltasten hoch und voriges Kommando neu ausführen *g* ;)

[dummerTipp]Oder einfach nen Antscript schreiben *g*[/dummerTipp]
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 1 times, last edit by "Markus" (Apr 25th 2010, 2:37pm)


jasper

Trainee

  • "jasper" is male

Posts: 35

Date of registration: Sep 28th 2009

Location: Hannover

7

Sunday, April 25th 2010, 2:51pm

Pfeiltasten kenn ich ;) Habe auch 'ne ganze Zeit lang Linux gneutzt. Autovervollständigung ist nur in der Windoofkommandozeile nicht zu gebrauchen.
Ich meine eher, dass ich aus "public void bla()" "public static void main(String[] args" machen muss, um nur die soeben erstellte Methode inemal durchzujagen und entsprechend auf Variablen auf die ich zugreife static sien müssen - immerhin gibt mir der Compiler den Tipp.

Kiki der Gecko

Regenbogeneidechse

Posts: 513

Date of registration: Oct 1st 2008

8

Monday, April 26th 2010, 5:21pm

Oder was noch sauberer ist: Eine Main-Klasse erstellen, die natürlich die main-Methode enthält und dort dann allen möglichen Test- und Debug-Kram reinschreiben. Was funktioniert, kann man dann auskommentieren (und evtl. mit einer entsprechenden Markierung versehen) und am Ende halt den richtigen Main-Kram reinschreiben. Oder halt auch nicht, je nachdem wie die Aufgabenstellung es verlangt.
"Alles ist eins - außer der Null." - Wau Holland

Rick

Mädchen

  • "Rick" is male

Posts: 1,266

Date of registration: Mar 17th 2004

Location: ::1/128

Occupation: Forentroll

9

Monday, April 26th 2010, 5:57pm

Gibt's in Java denn keinen Präprozessor, mit dem man sowas schön machen kann?
Spätestens mit Ant sollte man das doch richtig sauber machen können, und statt mit Kommentaren mit Compile-Zeit-Blöcken arbeiten?

Sometimes you've got to ask yourself: Is xkcd shitty today?

AlexL

Junior Schreiberling

  • "AlexL" is male

Posts: 222

Date of registration: Feb 10th 2008

Location: Walsrode

Occupation: Master Informatik

10

Monday, April 26th 2010, 8:37pm

wer in java seine funktionen testen will benutzt junit, in eclipse recht einfach zu handhaben. spätestestens mit bissl googln findet man raus wie.

die frage ist ob das nötig ist... ka ;-)

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

11

Tuesday, April 27th 2010, 7:30pm

Jajaja, jetzt kommen wir alle (mich eingeschlossen) mal runter von unseren Angebertripp von wegen wir-sind-so-toll-und-wissen-alles und erinnern uns daran, dass unserer kleinen Zweisies ja gerade erstmal mit den absoluten Java Grundlagen anfangen. Da heißt es javac statt eclipse und trial'n'error statt api auswendig kennen (:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

12

Wednesday, April 28th 2010, 8:48am

Markus, da geb ich dir vollkommen recht, doch muss man hinzufügen, dass doch ein Großteil der hohen Semester auch nicht mehr kann ;)
Ich weiß nicht, worauf die aktuelle Vorlesung aufbaut, doch empfiehlt sich immernoch das inzwischen zweiteilige Java-Buch aus der RRZN-Handbücher-Reihe als parallele Lektüre, günstig und leichte Kost zum Lernen.
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

This post has been edited 1 times, last edit by "Benjamin" (Apr 28th 2010, 8:49am)


hyperion

Erfahrener Schreiberling

  • "hyperion" is male

Posts: 422

Date of registration: Oct 8th 2004

13

Wednesday, April 28th 2010, 9:42am

Ich weiß nicht, worauf die aktuelle Vorlesung aufbaut, doch empfiehlt sich immernoch das inzwischen zweiteilige Java-Buch aus der RRZN-Handbücher-Reihe als parallele Lektüre, günstig und leichte Kost zum Lernen.


Ich denke, dass könnte vielleicht auch noch mal in der Vorlesung erwähnt werden. Ich werde es mal weiter leiten ;)
"Der Klügere gibt nach! Eine traurige Wahrheit, sie begründet die Weltherrschaft der Dummheit." --Marie von Ebner-Eschenbach

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

14

Wednesday, April 28th 2010, 8:23pm

Ich fand das Java RRZN Buch damals nicht so prickelnt. Aber sieht ja jeder anders (:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...