Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Θελω να κάνω υλοποίηση μιας άσκησης 

Reverse.java

Below is the syntax highlighted version of Reverse.java from §1.3 Stacks and Queues.


/******************************************************************************
 *  Compilation:  javac Reverse.java
 *  Execution:    java Reverse
 *  Dependencies: Stack.java StdOut.java StdIn.java
 *
 *  Read a sequence of integers from standard input and print them
 *  in reverse order.
 *
 *  % java Reverse
 *  1 2 3 4 5
 *  5
 *  4
 *  3
 *  2
 *  1
 ******************************************************************************/

public class Reverse {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<Integer>();
        while (!StdIn.isEmpty()) {
            stack.push(StdIn.readInt());
        }
        for (int i : stack) {
            StdOut.println(i);
        }
    }
}

αλλά δημιουργείται ατερμον βρόχος. Συγκεκριμένα στο Netbeans όταν ξεκινάει να τρεχει το πρόγραμμα δεν σταματάει , όσους integers και αν δωσω ή αν πληκτρολογήσω κενό. Πως γίνεται false η συνθηκη?

Δημοσ.

Τα StdIn και StdOut τι ακριβώς κάνουν; Είναι κλάσεις που έχεις υλοποιήσει εσύ; Μπορείς να βάλεις ένα breakpoint όταν εκτελείται η StdIn.readInt() και να ελέγξεις τυχόν τιμές για μεταβλητές της StdIn. 

Δημοσ.

Να φανταστώ ότι το βρήκες μόνος σου. Για όσους ενδιαφέρονται η συνθήκη παραμένει αληθείς όσο πληκτρολογούνται αριθμοί. Αν πληκτρολογηθεί κάποιο γράμμα ή άλλο σύμβολο δημιουργείται ένα Exception και τερματίζει το πρόγραμμα. Αν το while συμπεριληφθεί μέσα σε ένα try/catch block δεν τερματίζεται απρόοπτα το πρόγραμμα και συνεχίζει κανονικά μετά το catch block.

Δημοσ.
3 ώρες πριν, 3c0r1z είπε

Να φανταστώ ότι το βρήκες μόνος σου. Για όσους ενδιαφέρονται η συνθήκη παραμένει αληθείς όσο πληκτρολογούνται αριθμοί. Αν πληκτρολογηθεί κάποιο γράμμα ή άλλο σύμβολο δημιουργείται ένα Exception και τερματίζει το πρόγραμμα. Αν το while συμπεριληφθεί μέσα σε ένα try/catch block δεν τερματίζεται απρόοπτα το πρόγραμμα και συνεχίζει κανονικά μετά το catch block.

Δηλαδή αν δίνει ο χρήστης ακέραιους, το πρόγραμμα δε θα σταματάει ποτέ; 

Δημοσ.
2 ώρες πριν, george1703 είπε

Δηλαδή αν δίνει ο χρήστης ακέραιους, το πρόγραμμα δε θα σταματάει ποτέ; 

Ναι δεν θα σταματήσει να εκτελείται. 

try {
  while(!StdIn.isEmpty()) 
  	stack.add(StdIn.readInt());
}
catch(InputMismatchException ignore) {}        

Ο παραπάνω κώδικας θα διαβάζει αριθμούς μέχρι ο χρήστης να πληκτρολογήσει κάποιο μη αριθμό. Σε αυτή την περίπτωση θα εκτελεστεί ο κώδικας που ακολουθεί μετά την catch()

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...