Stack mit Benutzereingabe

javanewbie3

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:
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) {

    }

}
 

Robat

Top Contributor
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.
 

mihe7

Top Contributor
Dann darfst Du java.util.Stack natürlich nicht verwenden. Was sollst Du hernehmen, um den Stack zu implementieren?
 

javanewbie3

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 * *
 

mihe7

Top Contributor
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:
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.
    }
}
 

mihe7

Top Contributor
Oder vielleicht gefällt ihm ja auch etwas in der Art besser:
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.
}
 
X

Xyz1

Gast
@mihe7 n @mrBrown

jesus-is-watching-you-poop-21758657.png

;)
 

javanewbie3

Mitglied
Oder vielleicht gefällt ihm ja auch etwas in der Art besser:
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.
}
Danke für die Antwort , aber wie bekomm ich da jetzt meine Benutzereingabe rein bzw wie lass ich mir den Inhalt vom Stack jetzt ausgeben?
 

mihe7

Top Contributor
BTW: das waren zwei Extrembeispiele, wie man das Ansinnen des Aufgabenstellers mutmaßlich befrieden könnte: auf der einen Seite die Nutzung der existierenden Stack-Implementierung, auf der anderen eine ineffiziente Implementierung via char-Array. Alles dazwischen ginge natürlich auch (z. B. Implementierung auf Basis einer verketteten Liste bzw. Verwendung von LinkedList).

lass ich mir den Inhalt vom Stack jetzt ausgeben?
Das ist zur Lösung der Aufgabe nicht notwendig. Unabhängig davon gilt natürlich die Antwort @Robat.
 

javanewbie3

Mitglied
Sorry dass ich nochmal schreib hab es mit deiner ersten Variante umgesetzt nur bekomme ich es nicht hin dass mein Programm mit der Eingabe von einem "*" die Pop Methode anwendet :(

Java:
public class MeinStack {

    private Stack<String> stack = new Stack<>();

    public void push(String s) {
     stack.push(s);

    }

    public void pop(String s) {
   stack.pop();

    }

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

        System.out.println("Geben Sie ein Wort oder einen Buchstaben ein!");
        while (true) {

            input = sc.next();

            System.out.println("Eingabe: " + meinStack.push(input));
            System.out.println("Neuer Stack: " + meinStack);
            System.out.println("Bitte geben Sie ein Wort oder einen Buchstaben ein: ");

        }

    }

}
 

mihe7

Top Contributor
1. Die Zeile Stack meinstack = new Stack(); ist Unfug. Deine Klasse heißt nicht Stack sondern MeinStack.
2. Wie willst Du das auch hinbekommen, wenn Du keine Prüfungen drin hast?
Java:
if ("*".equals(input)) {
    // hol den Wert vom Stack und gib ihn aus
} else {
    // leg den Wert auf den Stack
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A stack Java Basics - Anfänger-Themen 14
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
V Ist Off-Heap-Speicher dasselbe wie Stack-Speicher? Java Basics - Anfänger-Themen 2
izoards Stack... Java Basics - Anfänger-Themen 17
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
L Stack bilden, push und pop Java Basics - Anfänger-Themen 16
KogoroMori21 Stack und Heap Speicher Java Basics - Anfänger-Themen 1
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
G Stack programmieren Java Basics - Anfänger-Themen 6
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
S Rekursiven Stack Java Basics - Anfänger-Themen 6
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
D Queue vs. Stack Java Basics - Anfänger-Themen 6
P Stack, Heap Java Basics - Anfänger-Themen 13
D Erste Schritte Stack im Rollenspiel Java Basics - Anfänger-Themen 76
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 7
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
A Stack programmieren -> Unklarheiten Java Basics - Anfänger-Themen 1
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
T Frage zu Java Stack Java Basics - Anfänger-Themen 5
D Stack-Objekt - LIFO - wait(); notify(); Java Basics - Anfänger-Themen 0
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
K Probleme mit stack Java Basics - Anfänger-Themen 7
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
G Stack invertieren Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
S Stack Problem mit Objekt Java Basics - Anfänger-Themen 2
X String mit String von Objekt im Stack vergleichen? Java Basics - Anfänger-Themen 14
D Stack auslesen mit pop Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
S Stack: Klasseninvariante Java Basics - Anfänger-Themen 4
L OOP Wrapper Klassen - Stack-Aufgabe Java Basics - Anfänger-Themen 2
M Frage zu Stack Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
T Probleme bei einen Stack der über drei Dateien funktionieren soll Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
K Stack und immer gleiches Objekt Java Basics - Anfänger-Themen 11
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
S Stack einlesen. Java Basics - Anfänger-Themen 2
E Stack kann nicht implimentiert werden Java Basics - Anfänger-Themen 11
E Eigene Stack Klasse schreiben Java Basics - Anfänger-Themen 12
J Stack Java Basics - Anfänger-Themen 3
K min-int-Wert in'nem Stack Java Basics - Anfänger-Themen 8
L Stack UpnRechner Java Basics - Anfänger-Themen 4
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
J Stack, der Integer-Zahlen enthält Java Basics - Anfänger-Themen 3
K Array Stack Java Basics - Anfänger-Themen 6
O Stack-Klasse Java Basics - Anfänger-Themen 7
S Stack mit Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
Z Keller/Stack Problem Java Basics - Anfänger-Themen 11
H Stack und Queue Java Basics - Anfänger-Themen 6
M Stack SetValTop Java Basics - Anfänger-Themen 6
G Die Klasse Stack selber schreiben. Java Basics - Anfänger-Themen 2
F Klammertest mit Stack implementieren Java Basics - Anfänger-Themen 5
X Stack Java Basics - Anfänger-Themen 14
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
S stack Java Basics - Anfänger-Themen 3
S Stack invertieren Java Basics - Anfänger-Themen 14
S Stack-Operationen Java Basics - Anfänger-Themen 59
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
A Stack, Frage zur Methode push Java Basics - Anfänger-Themen 4
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
D Stack chaos Java Basics - Anfänger-Themen 2
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
R Beispiele für Stack & Visualisierung Java Basics - Anfänger-Themen 2
R Stack: Wieso funktioiert das? Java Basics - Anfänger-Themen 2
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
N Stack-Probleme Java Basics - Anfänger-Themen 2
K Stack Overflow Java Basics - Anfänger-Themen 2
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben