alexcsk Δημοσ. 15 Απριλίου 2013 Δημοσ. 15 Απριλίου 2013 γεια σας! ειμαι καινουργια στον προγραμματισμο στην java και δουλευω σε μια εργασια για την σχολη μου ομως δεν μπορω να καταλαβω και να διωρθωσω καποια error..ενα μερος του προγραμματος και το πιο βασικο ειναι αυτο : import java.util.*;public class JavaApplication1 {static List<LinkedList> nodelist;public static void main(String[] args) {int i;System.out.println("posoi einai oi komboi?"); Scanner input = new Scanner(System.in);int V = input.nextInt();nodelist = new LinkedList<LinkedList>();for(i=1; i<V-1; i++){LinkedList l= new LinkedList();nodelist.get(i).add(i, l);}System.out.println("poies einai oi akmes?");String E = input.next();int s=E.indexOf(",");String F=E.substring(0,s);String T=E.substring(s+1,E.length());int f=Integer.parseInt(F);int t=Integer.parseInt(T);while(f!=0 && t!=0){E = input.next();s=E.indexOf(",");F=E.substring(0,s);T=E.substring(s+1,E.length());f=Integer.parseInt(F);t=Integer.parseInt(T);}} και τα ερρορ ειναι τα εξης : Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 at java.util.LinkedList.checkElementIndex(LinkedList.java:553) at java.util.LinkedList.get(LinkedList.java:474) at JavaApplication1.main(JavaApplication1.java:17) Java Result: 1 βοηθεια..
BALZ Δημοσ. 15 Απριλίου 2013 Δημοσ. 15 Απριλίου 2013 java.lang.IndexOutOfBoundsException: Σημαίνει ότι έβαλες λαθος δείκτες στην List.Στην java ξεκινάνε οι δείκτες από 0 και όχι από το 1 για δοκίμασε να το αλλάξεις.Δηλαδή το 1ο στοιχείο ειναι με δείκτη 0
defacer Δημοσ. 15 Απριλίου 2013 Δημοσ. 15 Απριλίου 2013 Λάθος index έβαλε, αλλά δεν είναι (μόνο) αυτό το πρόβλημα. Κοπελιά: καλωσήρθες στον κόσμο του debugging. Το μήνυμα λάθος είναι: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 at java.util.LinkedList.checkElementIndex(LinkedList.java:553) at java.util.LinkedList.get(LinkedList.java:474) at JavaApplication1.main(JavaApplication1.java:17) Δηλαδή εσύ κάλεσες την LinkedList.get() και έφαγες IndexOutOfBoundsException. Γιατί; Πηγαίνεις να δεις την τεκμηρίωση της μεθόδου αυτής. Τι λέει εκεί; Throws: IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size()) ΟΚ, αυτό εξηγεί τα πράγματα. IndexOutOfBounds exception σημαίνει ότι έχεις δώσει λάθος index. Κοιτάς τον κώδικά σου να δεις ποιά είναι η τιμή του index, μπορείς να το κάνεις π.χ. println πριν κάνεις το .get() και θα διαπιστώσεις ότι το λάθος index είναι 1. Βασικά την τιμή του index, όπως και του size, σου τη δίνει έτοιμη στο μήνυμα λάθους οπότε ακόμα ευκολότερο. Αυτό σημαίνει βάσει των παραπάνω ότι το size() είναι μηδέν. Τι είναι το size()? Αυτό: Returns the number of elements in this list. Άρα τι έχουμε; Η λίστα σου είναι άδεια και εσύ πας να κάνεις get() κάποιο στοιχείο της (που δεν υπάρχει). Σ' αυτό το σημείο πρέπει να είναι προφανές τι συμβαίνει: έχεις κάνει nodelist.add() πρώτα για να μπορείς να κάνεις μετά nodelist.get()? Ηθικό δίδαγμα: τα προβλήματα στον προγραμματισμό λύνονται διαβάζοντας την τεκμηρίωση του προβληματικού κώδικα. 3
nilosgr Δημοσ. 15 Απριλίου 2013 Δημοσ. 15 Απριλίου 2013 Θέλεις πράγματι μια λίστα από λίστες; - Γιατί LinkedList<LinkedList> αυτό σημάνει. Μήπως θες μια λίστα από int;
defacer Δημοσ. 15 Απριλίου 2013 Δημοσ. 15 Απριλίου 2013 Θέλεις πράγματι μια λίστα από λίστες; - Γιατί LinkedList<LinkedList> αυτό σημάνει. Σκοπεύει να αναπαραστήσει ένα graph με adjacency lists.
nilosgr Δημοσ. 16 Απριλίου 2013 Δημοσ. 16 Απριλίου 2013 Ενα Map<Integer, ArrayList<Integer>> δε θα βολευε καλυτερα;;
alexcsk Δημοσ. 16 Απριλίου 2013 Μέλος Δημοσ. 16 Απριλίου 2013 σας ευχαριστω ολους για την βοηθεια! η αληθεια ειναι οτι δεν εχω διδαχθει τιποτα σε java και το <LinkedList<LinkedList> ειναι σωστο (αν και δεν ξερω καν τι ειναι) γιατι ειναι μεσα στις οδηγιες της καθηγητριας για την ασκηση αυτη.το παραπανω προβλημα το ελυσα με την βοηθεια του defacer τον οποιο ευχαριστω!αλλα στη συνεχεια μου εβγαλε αλλα κουφα error.. το πιο κουφο ειναι οτι ενω καλω σωστα μια συναρτηση , μου βγαζει error γι αυτην δηλαδη:για την συναρτηση αυτη : public static void DFS_VISIT(int u, int V, int time, String E)οταν την καλω αναδρομικα μεσα σε μια for ετσι: DFS_VISIT(y, V, time, E); μου βγαζει : at JavaApplication1.DFS_VISIT(JavaApplication1.java:98) at JavaApplication1.DFS_VISIT(JavaApplication1.java:109) at JavaApplication1.DFS_VISIT(JavaApplication1.java:109) at JavaApplication1.DFS_VISIT(JavaApplication1.java:109) ...... παρα πολλες φορες... για ποιο λογο γινετε αυτο???
nilosgr Δημοσ. 16 Απριλίου 2013 Δημοσ. 16 Απριλίου 2013 Αν δε γράψεις όλο το log δε μπορούμε να καταλάβουμε ποιο είναι το πρόβλημα (το exception που πετάει). Βέβαια είναι λογικό να αναφέρει πολλές φορές αυτή τη μέθοδο, αφού την καλείς αναδρομικά, άρα το exception περνάει απ όλη τη stack με τις μεθόδους που κάλεσες και δεν τερμάτισαν. Μήπως είναι exception για stack overflow;
παπι Δημοσ. 17 Απριλίου 2013 Δημοσ. 17 Απριλίου 2013 Δες 2-3 random vids https://www.youtube.com/results?search_query=breakpoint+java&oq=breakpoint+java&gs_l=youtube.12...0.0.0.240.0.0.0.0.0.0.0.0..0.0...0.0...1ac.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα