Stack mit bestimmter Aufgabe

Java:
        if (ch == '(' || ch == '[' || ch == '{' ) {
                    positions.push(new CharacterPosition(row, col, ch));
                }
              
                else if(ch == ']') {
                    
                    if(!positions.empty()) {
                        CharacterPosition p = positions.pop();
                        if(p.character == '[') {
                            Main.printMatch(p.row+1,p.col+1,p.character, row+1, col+1,ch);
                        }
                        else {
                            Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                        }
                    }
                    else {
                        Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                    }
                }
                else if(ch == ')') {
                     if(!positions.empty()) {
                         CharacterPosition p = positions.pop();
                         if(p.character == '(') {
                             Main.printMatch(p.row+1,p.col+1,p.character, row+1, col+1,ch);
                         }
                         else {
                            Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                        }
                     }
                     else {
                         Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                     }
                }
                else if(ch == '}') {
                     if(!positions.empty()) {
                         CharacterPosition p = positions.pop();
                         if(p.character == '{') {
                             Main.printMatch(p.row+1,p.col+1,p.character, row+1, col+1,ch);
                         }
                         else {
                            Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                        }
                     }
                     else {
                         Main.printUnmatchedClosingBracket(row+1, col+1,ch);
                     }
                }   
            }
Das kann man mit Hilfe von Funktionen wesentlich einfacher formulieren.

Java:
if ( isBracketOpen(ch) ) {
      positions.push(new CharacterPosition(row, col, ch));
 }else if( isBracketClose(ch) ) {
      CharacterPosition p = positions.pop();
      if(!checkBracketPair( ch, p.character )) {
            Main.printUnmatchedClosingBracket(row+1, col+1,ch);
      }else{
           Main.printMatch(p.row+1,p.col+1,p.character, row+1, col+1,ch);
      }
}
 
Ach, ist das nicht java.util.Stack?
Ne das mussten wir selber implementieren zu Übungszwecken. Das habe ich noch hinbekommen🙂
Ich vermute mal, dass er sein Programm irgendwo hochladen muss und seine Klasse dann in irgendeinem Test-Framework ausgeführt wird und dort die Main.printXYZ-Methoden etwas anders implementiert sind.
Genau so ist es. Der Test mit Stack ist leer hat nicht funktioniert. Aber es ist doch egtl kein Fehler in meinem Programm?
 
Ne die Methode ist nicht falsch. Das wurde auch schon erfolgreich getestet. Auf jeden Fall habe ich den Code und den Algo insgesamt verstanden. Vielen Dank mihe7, dass du solange dabei geblieben bist. Ich habe echt auch viel dabei gelernt. Nochmals herzlichen Dank🙂
 
Wsl ist der Test für den leeren Stack falsch. In Eclipse funktioniert es mit dem leeren Stack.
Vielen Dank nochmals für euere Hilfe und Geduld🙂
 

Neue Themen


Zurück
Oben