Rückwärtsfahren einen stack in java

    public static void reverse(Stack arr){
    Queue<Integer> arrCopy=new LinkedList<Integer>();
    while(!arr.empty()){
        arrCopy.add((int)arr.pop());
    };
    System.out.print("{ ");
    while(!arrCopy.isEmpty()){
        System.out.print((int)arrCopy.remove() + ", ");
    }
    System.out.print("}");
}

so, ich habe einen Stapel mit 10 Ganzzahlen, und ich möchte, um es zu drucken in umgekehrter. ich schrieb eine neue Methode erstellt eine Warteschlange, und jedes mal, wenn es entfernt und gibt einen integer vom stack mit pop, wird es fügen Sie es in die Warteschlange. das problem ist, dass while(!arrCopy.isEmpty()) scheint nicht ausgeführt werden und die Warteschlange leer ist. gibt es ein casting-problem hier? oder gibt es etwas falsch mit der Art und Weise, die ich Hinzugefügt habe Elemente der Warteschlange?

Dank!

edit:
hier ist der code meiner main-Funktion (das ist der rest von meinem code):

public static void main(String[] args) {
        Random rand = new Random();
        Stack<Integer> a=new Stack<Integer>();

        for (int i=0; i<10; i++){
            a.push(rand.nextInt(50));
        }
        System.out.print("{ ");
        while(!a.empty()){
            System.out.print((int)a.pop() + ", ");
        }
        System.out.print("}");

        reverse(a);


}

Lösung:
ich habe es zu arbeiten, danke! das problem war, dass ich mit pop zurück (noch entfernen) alle Elemente aus dem stack, um es zu drucken, bevor Sie Rückwärtsfahren, was zu einem leeren stack. dies ist, wie ich es geändert, um zu arbeiten!

    public static Queue reverse(Stack arr){
    Queue<Integer> arrCopy=new LinkedList<Integer>();
    while(!arr.empty()){
        arrCopy.add((int)arr.pop());
    }
    return arrCopy;
}

public static void main(String[] args) {
        Random rand = new Random();
        Stack<Integer> a=new Stack<Integer>();

        for (int i=0; i<10; i++){
            a.push(rand.nextInt(50));
        }

         System.out.println("List:");
         System.out.println(a);

         System.out.println("Reversed List:");
         System.out.println(reverse(a));


}
  • Ich habe gerade deinen code getestet, und es funktioniert gut hier. Was ist Ihre Eingabe für die Funktion?
  • Sind Sie sicher, dass Ihre Stack ist nicht leer?
  • Können Sie uns zeigen Sie den code für Stack.
  • ich bin mir 100% sicher, dass der stack nicht leer ist, als ich ausgedruckt habe, es zu testen es raus. der Stapel druckt, aber die Rückseite ist leer. mein input Stack arr, die ich initialisiert, in der main-Funktion und gegeben haben, die zufällige Ganzzahlen.
  • Übergeben Sie einen leeren stack der Funktion. Beim drucken wird die stack-Sie platzen aus allen Elementen. So, jetzt Ihr Stapel leer wird, vor der übergabe in die Funktion.
  • Niemand sonst Debuggen können dies für Sie. Wenn die while(!arr.empty()) Schleife nicht eingegeben, dann wird der stack ist bereits leer. Sie brauchen, um Ihren debugger zu gehen und herauszufinden, was passiert ist.
  • Sie sind Entleerung der stack vor dem Aufruf der reverse Methode!
  • AH, danke!!!! das scheint das problem zu sein!

InformationsquelleAutor Danah | 2017-06-01
Schreibe einen Kommentar