Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Java array an Methode übergeben?

Empfohlene Antworten

Veröffentlicht

Hallo ich habe 2 Array die ich an eine Methode übergeben möchte bzw. über denn Constructor an eine zweite Class.


public constructortest(array1[][][] array2[]) {
this.array1 = array1;
this.array2 = array2;

}
[/PHP]

Das komische dabei ist jetzt, das ich im array 2 die werte habe und im array 1 nix bzw null einträge wo vorher noch die korrekten einträge eingetragen waren.

THX for Help

Grezz Badgott

Das komische dabei ist jetzt, das ich im array 2 die werte habe und im array 1 nix bzw null einträge wo vorher noch die korrekten einträge eingetragen waren.
So, und jetzt nochmal in verständlichem deutsch: Wo liegt dein Problem?

Aus der Beschreibung werde ich nicht schlau.

Poste mal ein Beispiel, am besten mit ein paar Konsolenausgaben, womit man den Fehler reproduzieren kann.


       private String array1[][];

       private String array2[];


	public Class1234(String[][][] array1, String[] array2) {

		this.array1= array1;

		this.array2= array2;

		System.out.println(array1[0][0][0])

	}

Die ausgabe währe "null" das Prob dabei ist das ich aber 100% in der Klasse wo ich das array1 fülle einen eintrag habe (String), hier sind alle eingetragenen werte futsch die dimension wird aber übernommen sprich [4][100][2]

Gruß Badgott


       private String [B]array1[][][/B];

       private String array2[];


	public Class1234([B]String[][][][/B] array1, String[] array2) {

		this.array1= array1;

		this.array2= array2;

		System.out.println(array1[0][0][0])

	}

Vielleicht liegt es daran, daß array1 zu Beginn eine Dimension weniger denkt?

Beim zweiten Drüberschauen fällt mir auf, daß Du die Werte aus dem übergebenen Array ausgibst, und nicht die des Instanz-Arrays.



private String array1[][];
private String array2[];

public Class1234(String[][][] array1, String[] array2) {
[/PHP]

hab jetzt den genauen Syntax nicht im Kopf, aber entweder du schreibst

public Class1234(String[][] array1, String[] array2)

oder

public Class1234(String[][][] array1, String[][] array2)

ich vermute mal (1) währe richtig...du machst da scheinbar aus deinem 2d-Array ein 3d-Array

ein tip für die Zukunft. Je nachdem was du da machst ist es Sinnvoller mit Vector/Collections zu Arbeiten als mit einem Array. Für Mehrdimensionalität lassen die sich dann verschachteln. Auf jeden fall hast du bei den Klassen mehr 'Überblick', also möglichkeiten den Fehler einzuschränken.

Kauft Euch doch bitte mal ein Wörterbuch. Es heißt 'wäre' nicht 'währe' oder bin ich mit der neuen Rechtschreibung noch nicht vertraut?

Hallo,

Sorry ein schreibfehler von mir es sind wie gesagt 3 Dimensionen

es ist dabei egal welches Array ich ausgebe das übergebene oder das dem ich das Übergebene zuweise es sind beide "null" prinzipiell sollte das so (die Übergabe) möglich sein oder ?

@lewlukai, fällt dir nichts besseres zu diesem Thema ein als rumzupöbeln ?

@badgott, auf anhieb sehe ich nichts, was die übergabe verhindern sollte.

Wenn ich nach hause komme, werd ich das mal testen...

@Badgott: Die Übergabe sollte funktionieren. Vielleicht postest Du mal den Code, der den Konstruktor aufruft. Denn der ist, wenn Du das mit den 3 Dimensionen bedacht hast, korrekt.

@Aiun: Mir ist schon besseres eingefallen. Aber wer kann denn bitte helfen, wenn er das Problem nicht versteht? Zugegeben, an diesem einen Wort hängt es sicher nicht.

Hallo,

also aufrufen bzw. übergeben tue ich das ganze wie folgt:


Klasse clXY = new XY(arr3DIM, arr1DIM);

kann des evtl. daran hängen das ich das aus der main (static) übergebe?

Gruß Badgott

Das ist 'ne gute Frage. Auf Anhieb würde ich ja sagen. Aber dann fällt mir ein, daß das eine lokale Variable ist. Und die benötigt meiner Vermutung nach diesen Modifikator nicht. Ein Test würde für Klarheit sorgen.

Ich nehme an, daß Du auch schon auf die Idee gekommen bist, die Arrays vor der Übergabe zu prüfen?

Wenn ich pedantisch bin, müßte Dein Konstruktoraufruf komplett umgestaltet werden. Bitte schick' keinen Pseudocode mehr, und wenn, dann bitte richtig.

Dein Aufruf müßte so lauten:

Class1234 var = new Class1234(arr3Dim, arr1Dim);

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.