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

απορία στην υλοποίηση της μεθόδου stack.peek() της java


member_c

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

Δημοσ.

Γεια σας. Έχω την εξής απορία:

Έχω έναν κώδικα σε Java στον οποίο χρησιμοποιώ μια στοίβα η οποία έχει περιεχόμενα τύπου int. Θέλω να αποθηκεύσω σε μια μεταβλητή int το περιεχόμενο του στοιχείου που βρίσκεται στην κορυφή της στοίβας. Προσπάθησα με την μέθοδο peek() και την lastElement() του πακέτου Vector, αλλά αυτές έχουν ως επιστρεφόμενο τύπο object.

Κάπου άκουσα πως αν το μετατρέψω σε Integer πρώτα, θα κάνω την δουλειά μου, αλλά δεν καταλαβαίνω πως υλοποιείται. Μήπως έχει κανείς καμιά καλή ιδέα; Ευχαριστώ!

Δημοσ.

Σ' ευχαριστώ thanos713! Αλλά το βρήκα! Τελικά έπρεπε να το μετατρέψω πρώτα σε string, μετά σε Integer και τέλος να χρησιμοποιήσω την intValue(). Αν χρειαστεί ποτέ κανείς τον κώδικα είναι ο παρακάτω:

 

Object o = lifo.peek();

s=o.toString();

Integer x=new Integer(s);

place=x.intValue();

 

όπου lifo η στοίβα μου, s ένα string και place μια μεταβλητή τύπου int.

Δημοσ.

Λοιπόν καταρχάς είναι θετικό που το λύσατε αλλά η λύση είναι λάθος. Πρέπει έιτε να δοθεί τύπος στην λίστα (σωστός τρόπος, χρησιμοποιώντας generics) είτε να μετατραπούν τα δεδομένα που παίρνουμε από τι λίστα στον τύπο που θέλουμε με type conversion (που μπορεί να γίνει χωρίς strings ως ενδιάμεσους σταθμους). To type conversion είναι ο κώδικας σε σχόλια.

>
public class Main {

   public static void main(String[] args) {
       //Vector lifo = new Vector();
       Vector<Integer> lifo = new Vector<Integer>();

       int x;

       lifo.add(2);
       lifo.add(4);

       //x = (Integer)lifo.lastElement();
       x = lifo.lastElement();

       System.out.println(x);
   }

}

Δημοσ.

Δίκιο έχεις ippo00! Σ' ευχαριστώ! Χρησιμοποίησα το type conversion γιατί με τα generics δεν έχω εξοικειωθεί ακόμα. Αλλά μήπως μπορείς να μου εξηγήσεις γιατί είναι λάθος; Από την στιγμή που έτρεχε δεν σκέφτηκα καθόλου να το ψάξω παραπέρα.. :/

Δημοσ.

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...