Hilfe bei dem Beispiel, wie gehe ich sowas am besten an?

Weisst du, was ein zweidimensionales Array in Java ist? Es ist ein Array aus Arrays. Das zweidimensionale Array `workArray` ist also bei dir ein Array, in welchem Zeilen stehen. Das heisst, der erste Index des Arrays definiert den Index einer Zeile.
Und nun musst du nur noch über das Array über alle Zeilen rüberrennen und diese umschreiben.
 
Weisst du, was ein zweidimensionales Array in Java ist? Es ist ein Array aus Arrays. Das zweidimensionale Array `workArray` ist also bei dir ein Array, in welchem Zeilen stehen. Das heisst, der erste Index des Arrays definiert den Index einer Zeile.
Und nun musst du nur noch über das Array über alle Zeilen rüberrennen und diese umschreiben.
hm ja so halb, zum beispiel 1,3,5 ist ein array und 6,2,1 ist einer oder
 
Überlege doch mal, wie du z.B. an die erste Zeile des zweidimensionalen Arrays kommst. Und wie an die zweite. Und an die eventuell dritte, vierte, fünfte, sechste... schreibe das vielleicht erstmal auf.
Du brauchst dafür den Arrayzugriffs/-index Operator.
 
Tja :/

Wenn du mal konkrete Fragen stellen würdest, dann könnte man auch helfen. Ausser "tja" kann man da gerade nichts antworten. Wo hapert es genau? Was hast du bis jetzt genau probiert und wo sind die Fehler?
Du musst halt schon die meiste Arbeit selbst hineinstecken.
 
Tja :/

Wenn du mal konkrete Fragen stellen würdest, dann könnte man auch helfen. Ausser "tja" kann man da gerade nichts antworten. Wo hapert es genau? Was hast du bis jetzt genau probiert und wo sind die Fehler?
Du musst halt schon die meiste Arbeit selbst hineinstecken.

hm ja ich habe probiert mich damit auseinander zu setzten und probiert das zu machen was du geschrieben hast aber halt nichts geschafft, ich überleg wie ich es schaffe den array wert zu nehmen und ihn eine stelle weiter zu geben
 
hm ja ich habe probiert mich damit auseinander zu setzten und probiert das zu machen was du geschrieben hast aber halt nichts geschafft, ich überleg wie ich es schaffe den array wert zu nehmen und ihn eine stelle weiter zu geben
Und was genau hast du probiert? Was waren denn bisher genau deine Gedankengänge, die du probiert hast? Ich habe dir ja mit Arrayzugriff/-index Operator schonmal einen Begriff genannt. Hast du den mal online nachgeschlagen? Hast du überhaupt irgendwas mal von selbst versucht, nachzuschlagen/zu recherchieren? Wieso lassen sich Leute eigentlich immer alles aus der Nase ziehen? Basically: Du musst jetzt einfach mal beweisen, dass du selbst etwas probiert hast, z.B. mit einem (so schlecht er auch sei) Codeschnipsel von dir und einer Erklärung, was du glaubst, das der tun soll.
Bist du sicher, dass du überhaupt schon etwas probiert/recherchiert/nachgedacht hast, und dir nicht einfach nur eine fertige Lösung hier von jemandem erschleichen möchtest? 🙂
 
Und was genau hast du probiert? Was waren denn bisher genau deine Gedankengänge, die du probiert hast? Ich habe dir ja mit Arrayzugriff/-index Operator schonmal einen Begriff genannt. Hast du den mal online nachgeschlagen? Hast du überhaupt irgendwas mal von selbst versucht, nachzuschlagen/zu recherchieren? Wieso lassen sich Leute eigentlich immer alles aus der Nase ziehen? Basically: Du musst jetzt einfach mal beweisen, dass du selbst etwas probiert hast, z.B. mit einem (so schlecht er auch sei) Codeschnipsel von dir und einer Erklärung, was du glaubst, das der tun soll.
Bist du sicher, dass du überhaupt schon etwas probiert/recherchiert/nachgedacht hast, und dir nicht einfach nur eine fertige Lösung hier von jemandem erschleichen möchtest? 🙂
Java:
private static void shiftLinesInArray(int[][] workArray) {
        int[] narray = workArray[workArray.length-1];
        System.arraycopy(workArray, 0, workArray, 1, workArray.length - 1);


    }

Ich habe so etwas probiert und habe schon sehr viel auch online nachgeschaut und probiere eh viel selber draufzukommen und will ja eh selber auf die lösung kommen weil es ja sonst mir nichts bringt
 
Wenn so eine Methode nicht das macht, was man erwartet: Vielleicht kannst Du ja selbst eine Methode schreiben, die die Aufgabe erfüllt?

Was müsstest Du denn da machen? Wie würdest Du vorgehen?
 
hm das problem ist ich weiß nicht wie ich es schaff den array zu nehmen und ihm quasi +1 postion weiter zu geben aber halt den ganzen array und nicht nur einen wert in z.b 1,3,5
 
[CODE lang="java" title="hab bis jetzt das aber es macht leider 2 schritte bzw in die falsche richtung"]private static void shiftLinesInArray(int[][] workArray) {
for (int i = 0; i < workArray.length ; i++) {
int shiftedI = (i+1) % workArray.length;
for (int j = 0; j < workArray.length; j++) {
System.out.print(workArray[shiftedI][j] + " ");
}
System.out.println();
}
}[/CODE]
 
Falls du Probleme mit dem zweidimensionalen Array hast, dann überleg dir eine Lösung für ein einfaches int-Array. Das Prinzip bleibt das gleiche.

Bevor du allerdings einfach drauflos programmierst: Erst denken! Wie würdest du "von Hand" dieses Array verschieben?

{ 1, 2, 3, 4 } => { 2, 3, 4, 1 }

Das könnte z. B. so beginnen:
Nimm das zweite Element und kopiere es an die Stelle des ersten Elements.
Nimm das dritte Element und kopiere es an die Stelle des zweiten Elements.
...

Beim letzten Element wirst du ein Problem feststellen, weil vor dem ersten Schritt noch etwas gemacht werden muss.

Und dein Problem mit dem "kompletten Array nehmen und weiter zu geben". Das ist ganz einfach.
Java:
int[] arr1 = { 1, 2, 3 }; // ein Array, das drei int-Werte enthält

int[] arr2 = arr1; // { 1, 2, 3 }

int[][] arr3 = { { 1, 2, 3 }, { 4, 5, 6 } }; // ein Array, das zwei Arrays mit je drei int-Werten enthält

int[] arr4 = arr3[0]; // { 1, 2, 3 }
int[] arr5 = arr3[1]; // { 4, 5, 6 }
arr3[1] = arr2; // arr3 = { { 1, 2, 3 }, { 1, 2, 3 } }
arr3[0] = arr5; // arr3 = { { 4, 5, 6 }, { 1, 2, 3 } }
 
Zuletzt bearbeitet:
Beschreibe es doch erst einmal in Worten!

Und stell Dir dabei das Array einfach als einen Schrank mit Schubladen vor.

Nun soll die oberste Schublade an 2te Stelle. die 2te and 3te, ... und die Letzte an erste Stelle.

Wie gehst Du vor? Wie schaffst Du das?
 
Also ich sehe mehrere Probleme in deinem Code. Ich denke mal, dass Du es nur getestet hast mit eine Konstellation, bei der es durch Zufall funktioniert.

Lies noch einmal die Aufgabenstellung durch:
- Hast Du es mal für beide Beispiele durchgetestet? (Ich fürchte, du hast nur das erste Beispiel getestet,...)
- Hast Du die Aufgabenstellung wirklich erfüllt? Oder steht da, dass Du etwas machen sollst, das Du nicht gemacht hast?

Das nur als kleiner Hinweis am Rande.
 
Also ich sehe mehrere Probleme in deinem Code. Ich denke mal, dass Du es nur getestet hast mit eine Konstellation, bei der es durch Zufall funktioniert.

Lies noch einmal die Aufgabenstellung durch:
- Hast Du es mal für beide Beispiele durchgetestet? (Ich fürchte, du hast nur das erste Beispiel getestet,...)
- Hast Du die Aufgabenstellung wirklich erfüllt? Oder steht da, dass Du etwas machen sollst, das Du nicht gemacht hast?

Das nur als kleiner Hinweis am Rande.
oh stimmt es klappt nur das erste und der zweite versuch nicht vielen dank
 
Das könnte z. B. so beginnen:
Nimm das zweite Element und kopiere es an die Stelle des ersten Elements.
Nimm das dritte Element und kopiere es an die Stelle des zweiten Elements.
Das war natürlich Quatsch. Hatte die Aufgabenstellung nicht mehr richtig im Kopf. So ist es richtig:

Nimm das erste Element und kopiere es an die Stelle des zweiten Elements.
Nimm das zweite Element und kopiere es an die Stelle des dritten Elements.
...
Beim letzten Element wirst du ein Problem feststellen, weil vor dem ersten Schritt noch etwas gemacht werden muss.
 
Also ich sehe mehrere Probleme in deinem Code. Ich denke mal, dass Du es nur getestet hast mit eine Konstellation, bei der es durch Zufall funktioniert.

Lies noch einmal die Aufgabenstellung durch:
- Hast Du es mal für beide Beispiele durchgetestet? (Ich fürchte, du hast nur das erste Beispiel getestet,...)
- Hast Du die Aufgabenstellung wirklich erfüllt? Oder steht da, dass Du etwas machen sollst, das Du nicht gemacht hast?

Das nur als kleiner Hinweis am Rande.
also ich habe einen neuen array quasi erstellt aber darf ihn ja nur umbauen so?
 
Ja, du sollst nur umbauen. In #19 habe ich ja versucht, Dir ein visuelles Beispiel zu geben. Wie gehst Du denn vor?

Du hast eine Kommode mit x Schubladen.
Die oberste Schublade soll zu der untersten werden und alle anderen sollen eins hoch Rücken.

Nun beschreibe mir, wie ich das hin kriege. Und das ohne, dass ich mir eine zweite Kommode anschaffen muss!
 
Ja, du sollst nur umbauen. In #19 habe ich ja versucht, Dir ein visuelles Beispiel zu geben. Wie gehst Du denn vor?

Du hast eine Kommode mit x Schubladen.
Die oberste Schublade soll zu der untersten werden und alle anderen sollen eins hoch Rücken.

Nun beschreibe mir, wie ich das hin kriege. Und das ohne, dass ich mir eine zweite Kommode anschaffen muss!
ja genau habe mir ja auch überlegt quasi, dass ich den ersten array neheme und ich als zweiten abspeicher aber halt ohne neuen array und nur überarbeiten fällt mir nichts ein
 
in dem Fall erstellen wir doch neue arrayys und das darf ich ja nicht in dieser Aufgabe
Nö, nur arr1 und arr3 werden neu erstellt, alle anderen werden einander zugewiesen. Wenn du das verstanden hast, dann sollte die Aufgabe ganz leicht sein.

Java:
int[] arr1 = { 1, 2, 3 }; // erstellt ein Array und weist die Referenz darauf der Variablen zu
int[] arr2 = arr1; // weist die Referenz auf arr1 der Variablen arr2 zu

// die beiden Variablen arr1 und arr2 zeigen jetzt auf das selbe Array
arr1 = { 4, 5, 6 }; // erstellt ein neues Array und weist die Referenz darauf der Variablen zu. Die ursprüngliche Referenz geht verloren.

// Die Referenz auf das ursprüngliche Array ist aber noch in arr2 gespeichert.
System.out.println(Arrays.toString(arr1)); // { 4, 5, 6 }
System.out.println(Arrays.toString(arr2)); // { 1, 2, 3 }

Siehe auch: https://www.java-forum.org/thema/von-datentypen-und-mehrdimensionalen-arrays.189506/
 
Zuletzt bearbeitet:
Ich selbst glaube ja immer noch, dass es am generellen Verständnis hapert.

Daher der Versuch, das visuell vorzustellen.

Wenn man eine Kommode hat mit n Schubladen. Die erste Schublade soll die letzte werden und die erste dann die letzte - wie geht man da vor?

Die erste Schublade nimmt man raus und tut die irgendwo hin wo man Zugriff drauf hat.
Dann nimmt man die zweite und tut sie auf den Platz der ersten ...
Dann die Dritte und tut sie auf den Platz der Zweiten ...
u.s.w.
Am Ende tut man die erste Schublade ans Ende.

So eine Ablauf kann man sich einfach vorstellen und dann kann man das auch jederzeit umsetzen.

Schubladen sind jetzt Arrays. Also kann man sowas machen:
int[] temp = array[0];
Und dann die jeweilige Zuweisung wäre sowas wie:
array[0] = array[1];
Wie man das aber universell ausdrückt in einer Schleife, das musst Du Dir noch überlegen.
Und dann am Ende kommt noch eine Zuweisung auf das letzte Element...
 

Zurück
Oben