Stack mit Benutzereingabe

Diskutiere Stack mit Benutzereingabe im Java Basics - Anfänger-Themen Forum; Ich habe ein Problem: Ich muss einen Stack mit einer Benutzereingabe machen wo der Benutzer Buchstaben eingibt und diese am Stack abgelegt werden....

  1. javanewbie3
    javanewbie3 Neues Mitglied
    Ich habe ein Problem: Ich muss einen Stack mit einer Benutzereingabe machen wo der Benutzer Buchstaben eingibt und diese am Stack abgelegt werden. Es soll mit push, pop, peek und empty abgewickelt werden. Jeder Buchstabe wird abgelegt und mit * wird ein Buchstabe entfernt. Am Ende soll ein Lösungswort rauskommen wenn man eine bestimmte Kombination eingibt. Ich hänge gerade und weiß nicht wie ich weiter machen soll hätte jemand eine Idee?
    Hier mein Ansatz:
    Code (Java):
    package meinstack;

    import java.util.LinkedList;
    import java.util.Scanner;
    import java.util.Stack;

    public class MeinStack {

        public static void main(String[] args) {
            Stack<String> meinStack = new Stack<>();
            Scanner sc = new Scanner(System.in);
            String input;

            System.out.println("Geben Sie einen Buchstaben ein!");
            while (true) {
                input = sc.next();
                meinStack.push(input);
                System.out.println("Derzeitige Ausgabe: " + meinStack.get(0));
                System.out.println("Neuer Stack: " + meinStack.get(0));
                System.out.println("Bitte geben Sie einen Buchstaben ein: ");

            }

        }

        private static void push(String input) {

        }

    }
     
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. Robat
    Robat Bekanntes Mitglied
    Zunächst müsstest du bei Eingabe prüfen, ob es sich um einen Buchstaben oder ein '*' handelt.
    Je nach Eingabe musst du dann eben mit push den Buchstaben auf den Stack pushen oder mit pop den zuletzt hinzugefügten Buchstaben löschen.
     
  4. mihe7
    mihe7 Bekanntes Mitglied
    Sollst Du einen Stack implementieren oder sollst Du einen solchen nur verwenden?
     
  5. javanewbie3
    javanewbie3 Neues Mitglied
    Ich muss einen Stack implementieren.
     
  6. mihe7
    mihe7 Bekanntes Mitglied
    Dann darfst Du java.util.Stack natürlich nicht verwenden. Was sollst Du hernehmen, um den Stack zu implementieren?
     
  7. javanewbie3
    javanewbie3 Neues Mitglied
    Ich soll einen Stack für einzelne Zeichen implementieren und dabei die typischen JFC-Methoden (push, pop, peek, empty) verwenden.
     
  8. mihe7
    mihe7 Bekanntes Mitglied
    Kannst Du den Aufgabentext mal reinstellen?
     
  9. javanewbie3
    javanewbie3 Neues Mitglied
    Implementieren sie einen Stack für einzelne Zeichen
    a) Die typischen JFC-Methoden (push, pop, peek, empty) sollen verwendet werden.
    b) Die Eingabe der Zeichen erfolgt über die Tastatur.
    c) Geben sie die nachfolgenden Zeichen so ein, dass jeder angegebene Buchstabe auf den Stack gelegt wird (push) und ein Stern (*) einen Buchstaben vom Stack holt (pop) und am
    Bildschirm ausgibt. Verwenden sie Exceptions und sichern sie den Stack gegen ungültige Eingaben (z.B. Zahlen, etc.) ab.
    Eingabe: L I * * ! K I * * A S E * * T * * K C * * S * *
     
  10. mihe7
    mihe7 Bekanntes Mitglied
    Die Aufgabe besteht anscheinend darin, herauszufinden, wie man den Text interpretieren muss, damit herauskommt, was sich der Aufgabensteller evtl. vorgestellt haben könnte... Da kann ja alles mögliche gemeint sein.

    Nachdem hier keine Einschränkungen genannt sind, nimm einfach java.util.Stack her. D. h. die Klasse würde so aussehen:
    Code (Java):

    public class MeinStack {
        private Stack<String> stack = new Stack<>(); // evtl. statt String Character verwenden

        public void push(String s) {
            // hier ungültige Eingaben abfangen und Exceptions werfen
            // dann einfach an den stack weitergeben
            stack.push(s);
        }

        // für die anderen Methoden analog

        public static void main(String[] args) {
             // hier deinen Stack verwenden:
             MeinStack meinstack = new MeinStack();
             // ab hier Benutzereingaben etc.
        }
    }
     
     
  11. mihe7
    mihe7 Bekanntes Mitglied
    Oder vielleicht gefällt ihm ja auch etwas in der Art besser:
    Code (Java):

    public class MeinStack {
        private char[] stack = new char[0];

        public boolean isEmpty() { return stack.length == 0; }

        public void push(char ch) {
            char[] newStack = new char[stack.length+1];
            copyStackTo(newStack, stack.length);
            newStack[stack.length] = ch;
            stack = newStack;
        }

        public char peek() {
            if (isEmpty()) { // Exception werfen }
            return stack[stack.length - 1];
        }

        public char pop() {
            char result = peek();
            char[] newStack = new char[stack.length-1];
            copyStackTo(newStack, newStack.length);
            stack = newStack;
        }

        private void copyStackTo(char[] arr, int elements) {
            for (int i = 0; i < elements; i++) {
                arr[i] = stack[i];
            }
        }

        // usw.
    }
     
     
  12. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

Stack mit Benutzereingabe - Ähnliche Themen

Liste,Queue,Stack sortieren
Liste,Queue,Stack sortieren im Forum Java Basics - Anfänger-Themen
FXML: StackPane als Root-Element
FXML: StackPane als Root-Element im Forum AWT, Swing, JavaFX & SWT
MergeSort iterativ mit Stacks
MergeSort iterativ mit Stacks im Forum Java Basics - Anfänger-Themen
Stacks und Queues Implementieren
Stacks und Queues Implementieren im Forum Java Basics - Anfänger-Themen
Stack und Queue in Aktion (Bitte Hilfe für die Klausur)
Stack und Queue in Aktion (Bitte Hilfe für die Klausur) im Forum Java Basics - Anfänger-Themen
Thema: Stack mit Benutzereingabe