Methoden Falsche Felder von Methode belgegt

widna

Mitglied
Hallo Leute,
Ich sitze jetzt seid ungefähr einer Woche an einem Programm für den Unterricht. Ich stehe aber vor einem Problem, das ich einfach nicht verstehe.
Mein Code ist ätzend lang und wahrscheinlich ist es fast unmöglich sich da nochmal reinzudenken deshalb hab ich das Problem mal sehr vereinfacht.
Java:
public class test {
  public static void main (String[]args){
    int feld[][][]= new int [2][3][4];
    methode (feld[0]);
    for (int x=0;x<3 ;x++ ) {
      for (int y=0;y<4 ;y++ ) {
        System.out.print(feld[0][x][y]);
      } // end of for
      System.out.println("");
    } // end of for
    for (int x=0;x<3 ;x++ ) {
      for (int y=0;y<4 ;y++ ) {
        System.out.print(feld[1][x][y]);
      } // end of for
      System.out.println("");
    } // end of for
  }
  public static void methode(int feld[][]){
    for (int i=0;i<3 ;i++ ) {
      for (int j=0;j<4 ;j++ ) {
        feld [i][j]=5;
      } // end of for
    } // end of for
  }
}
Wenn man diesen Code kompiliert funktioniert auch alles so wie es sollte. feld[0][][] wird mit 5en belegt und feld[1][][] wird in Ruhe gelassen.
In meinem Code steht meiner Meinung nach nicht viel anderes aber es werden beide Felder mit 5en belegt.
Gibt es da einen häufigen Fehler, den ich übersehen haben könnte?

Vielen Dank im Voraus!
widna
 

geqoo

Bekanntes Mitglied
Das Problem liegt in deiner "methode".
Völlig egal, was du hier übergibst: Durch die 2 for-Schleifen ist es ganz normal, dass beide Felder gefüllt werden, siehe hier:

Java:
feld [i][j]=5;
Evtl. wäre der Hintergrund für uns interessant, dann könnten wir Verbesserungsvorschläge machen :idea:
 
Zuletzt bearbeitet:

widna

Mitglied
Was meinst du jetzt mit beide Felder?
Also es geht darum, dass ich ein Labyrinth lösen will, mit dem schnellsten Weg.
Dass heißt ich hab eine Mutter Methode, und vier Methoden die das Labyrinth unterschiedlich abarbeiten.
Die Methode die am wenigsten Schritte gebraucht hat soll für die Hauptmethode in Erwägung für die Hauptmethode gezogen werden. Also ruft die Hauptmethode die Methoden mit feld[0], feld[1], feld[2] und feld[3] auf und füllt selber feld[4] aus.
Aber selbst wenn ich nur eine Untermethode abfragen lasse, füllt diese direkt alle anderen Felder mit aus.
Bringt das weiter? :)
 

diggaa1984

Top Contributor
Da dein gegebener Code ja funktioniert, ist es schwierig Fehler zu finden. Vielleicht kannst du mehr aus deinem eigentlichen Code einbauen um dem Fehler auf die Schliche zu kommen?
 

widna

Mitglied
Also die Untermethoden sind Booleans.
Ich frage also in der Hauptmethode:
Java:
if (loesen0(feld[0],startx,starty)&&loesen1(feld[1],startx,starty)&&loesen2(feld[2],startx,starty)&&loesen3(feld[3],startx,starty))
Dadurch sollten die alle ihr eigenes Feld behandeln.
Das ist auch das einzige mal, dass ich die aufrufe.
Java:
public boolean loesen0(char [] [] feld, int startx0, int starty0) { 
    if (startx0>0 && startx0<breite-1 && starty0>0 && starty0<hoehe-1)  {
      if (feld[startx0+1] [starty0]==' ') {
        feld[startx0+1] [starty0]='*';
        if (loesen0(feld,startx0+1,starty0)) {
          feld[startx0+1] [starty0]='O';
          schritte[0]++;
          return true;
        } // end of if        
      } // end of if    
      
      if (feld[startx0-1] [starty0]==' ') { 
        feld[startx0-1] [starty0]='*';
        if (loesen0(feld,startx0-1,starty0)) {
          feld[startx0-1] [starty0]='O';
          schritte[0]++;
          return true;
        } // end of if
      } // end of if
      
      if (feld[startx0] [starty0+1]==' ') {
        feld[startx0] [starty0+1]='*';
        if (loesen0(feld,startx0,starty0+1)) {
          feld[startx0] [starty0+1]='O';
          schritte[0]++;
          return true;
        } // end of if        
      } // end of if
      
      if (feld[startx0] [starty0-1]==' ') {
        feld[startx0] [starty0-1]='*';
        if (loesen0(feld,startx0,starty0-1)) {
          feld[startx0] [starty0-1]='O';
          schritte[0]++;
          return true;
        } // end of if 
      } // end of if
      
      if (feld[startx0+1] [starty0]!=' ' && feld[startx0-1] [starty0]!=' ' && feld[startx0] [starty0+1]!=' ' && feld[startx0] [starty0-1]!=' ') {
        if (feld[startx0+1] [starty0]=='Z') {
          return true;  
        } // end of if
        
        else if (feld[startx0-1] [starty0]=='Z') { 
          return true;
        } // end of if
        
        else if (feld[startx0] [starty0+1]=='Z') {
          return true;        
        } // end of if
        
        else if (feld[startx0] [starty0-1]=='Z') {
          return true;       
        } // end of if
        
        else {
          return false;
        } // end of if-else
      } // end of if 
      else {
        return false;
      } // end of if-else
    } // end of if
}
So dass ist ein Teil einer der Untermethoden. Die unterscheiden sich nicht viel.
 

Ruzmanz

Top Contributor
Bei sowas findet sich oft ein Copy & Paste-Fehler. Was ich mir noch vorstellen könnte, wobei ich mir nicht 100% sicher bin, ob das Labyrinth so gebaut ist:

Java:
      if (feld[startx0+1] [starty0]==' ') {
        // Ändert den Inhalt von "feld".
        feld[startx0+1] [starty0]='*';
        if (loesen0(feld,startx0+1,starty0)) {
          feld[startx0+1] [starty0]='O';
          schritte[0]++;
          return true;
        } // end of if        
      } // end of if    
     
      // Der Inhalt von "feld" wurde geändert und anstatt dem ' ' sind dort nun auch '*'
     // 'O' steht evtl. an der falschen Stelle.
      if (feld[startx0-1] [starty0]==' ') {
        feld[startx0-1] [starty0]='*';
        if (loesen0(feld,startx0-1,starty0)) {
          feld[startx0-1] [starty0]='O';
          schritte[0]++;
          return true;
        } // end of if
      } // end of if
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Kannst du mal ein Beispiel für das Labyrinth geben? Andere Möglichkeit ist, dass die Startpunkte durch Kanäle verbunden ist und du, wie gesagt dein feld[][] änderst, ohne sie zurückzusetzen.

Java:
if(loesen0(feld[0],startx,starty) // feld wird geändert
&&loesen1(feld[1],startx,starty) // Geändertes Feld wird geprüft
&&loesen2(feld[2],startx,starty) // Doppelt geändertes Feld wird geprüft
&&loesen3(feld[3],startx,starty) // Dreifach geändertes Feld wird geprüft
)

[WR]Oh, sorry ich glaube ich habe dein Problem falsch verstanden.[/WR]
 
Zuletzt bearbeitet:

widna

Mitglied
Code:
#########z#
#         #
######### #
s     #   #
##### # ###
#     # # #
# ### # # #
# #   #   #
# ####### #
#         #
###########

Aber das kann doch gar nicht sein.
Die Methode loesen1(feld[1],startx,starty) kann doch gar nicht auf feld[0] zugreifen...
 

diggaa1984

Top Contributor
das problem ist doch jetzt, dass feld[1] die falschen Werte enthält? Wo in dem Code setzt du denn Zahlwerte, oder ging es nicht um Zahlen? Was steht jetzt in feld[1] obwohl nur 0 gelöst wird?
 

widna

Mitglied
Das Problem ist:
In feld[4], dem Hauptfeld das nie mit einer der Lösungsmethoden behandelt wird, feld[1], feld[2] und feld[3] steht überall der Inhalt von feld[0], auch wenn ich nur loesen0(feld[0],startx,starty) ausführe.
 

Ruzmanz

Top Contributor
Ich habs mal ausprobiert. Das funktioniert alles richtig. Kann es sein, dass du dein Hauptfeld nicht kopierst? Wie genau befüllst du dein feld[][][]?
 
Zuletzt bearbeitet:

widna

Mitglied
Was hast du denn ausprobiert?
Also am Anfang fülle ich alle Felder (feld[0][][],feld[1][][]...) mit dem Labyrinth. Dann Lasse ich 0-3 ausfüllen und schaue welche Methode den schnellsten Weg hatte und übernehme den nächsten Schritt (und nur den einen Schritt) in feld[4][][]. Dann werden 0-3 mit 4 gleichgesetzt und das ganze wiederholt sich...
 

Ruzmanz

Top Contributor
Also machst du folgendes nach dem ersten Schritt?

Java:
feld[0] = feld[4];
feld[1] = feld[4];
feld[2] = feld[4];
feld[3] = feld[4];

Das hat zur Folge, dass alle Felder 0-3 exakt die selbe Referenz (char[][]) verwenden. Siehe:
Kopieren von Arrays
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
L Falsche Methode wird geladen Java Basics - Anfänger-Themen 2
T JLabel hat falsche größe Java Basics - Anfänger-Themen 1
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R StringBounds falsche Ergebnisse Java Basics - Anfänger-Themen 5
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
W Array in String und String in Array - falsche Ausgaben Java Basics - Anfänger-Themen 20
T Falsche Ausgabe ???? Java Basics - Anfänger-Themen 13
S Falsche Ausgabe Java Basics - Anfänger-Themen 6
M Input/Output ISBN Leser - falsche Eingabe ausgeben Java Basics - Anfänger-Themen 2
V Personenverwaltung mit List<>, falsche Ausgaben Java Basics - Anfänger-Themen 5
R Methoden Switch wählt das Falsche Java Basics - Anfänger-Themen 17
K Falsche Methode Java Basics - Anfänger-Themen 3
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
M Falsche Eingabe wiederholen lassen Java Basics - Anfänger-Themen 2
M falsche implementierung von currentTimeMillis() ? Java Basics - Anfänger-Themen 14
F charAt-Methode liefert falsche Unicode-Werte Java Basics - Anfänger-Themen 8
P Falsche Werte bei Zeitmessungen Java Basics - Anfänger-Themen 7
Helgon Falsche Zeichen im Text Java Basics - Anfänger-Themen 10
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
D Kriege falsche MD5 Java Basics - Anfänger-Themen 12
R run ->eclipse ruft falsche Programme auf Java Basics - Anfänger-Themen 5
D p q formel gibt zum Teil falsche Werte aus Java Basics - Anfänger-Themen 5
S Falsche Version? Java Basics - Anfänger-Themen 2
C Falsche Zeit Java Basics - Anfänger-Themen 2
V Falsche Augabe Java Basics - Anfänger-Themen 16
C Klammern einlesen!!! Falsche Ausgabe!!!! Java Basics - Anfänger-Themen 4
S Falsche Reihenfolge von Methodenaufrufen Java Basics - Anfänger-Themen 8
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
K Verschiebeoperatoren - manchmal falsche Ergebnisse Java Basics - Anfänger-Themen 7
L Datenbankanbindung ODBC falsche pfadangabe? Java Basics - Anfänger-Themen 3
O Falsche Bed. (ein überlauf) seh den Fehler aber nicht. Java Basics - Anfänger-Themen 3
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
S Falsche Ausgabe Java Basics - Anfänger-Themen 3
L Wegen TableSorter wird falsche Zeile einer Tabelle gelöscht? Java Basics - Anfänger-Themen 2
G falsche Version Java Basics - Anfänger-Themen 3
L Falsche Umsetzung von MVC, brauche Hilfe Java Basics - Anfänger-Themen 6
D Tabelle -> Daten eingeben -> Falsche erhalten Java Basics - Anfänger-Themen 9
S Falsche Ausgabe? Java Basics - Anfänger-Themen 2
F Falsche Daten aus Datei Java Basics - Anfänger-Themen 2
G Falsche Java befehle, doch was ist falsch? Java Basics - Anfänger-Themen 9
C falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
M Falsche do-Schleife? Java Basics - Anfänger-Themen 4
E falsche Ausgabe Java Basics - Anfänger-Themen 7
D Falsche Datumsausgabe? Java Basics - Anfänger-Themen 5
J erhalte falsche Kalenderwoche - wo ist der Fehler? Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben