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

java error .. !


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

Δημοσ.

γεια σας! ειμαι καινουργια στον προγραμματισμο στην 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

 βοηθεια..  :fear:

Δημοσ.

java.lang.IndexOutOfBoundsException: Σημαίνει ότι έβαλες λαθος δείκτες στην List.Στην java ξεκινάνε οι δείκτες από 0 και όχι από το 1 για δοκίμασε να το αλλάξεις.Δηλαδή το 1ο στοιχείο ειναι με δείκτη 0

Δημοσ.

Λάθος 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()?

 

Ηθικό δίδαγμα: τα προβλήματα στον προγραμματισμό λύνονται διαβάζοντας την τεκμηρίωση του προβληματικού κώδικα.

  • Like 3
Δημοσ.

σας ευχαριστω ολους για την βοηθεια! 
η αληθεια ειναι οτι δεν εχω διδαχθει τιποτα σε 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) ...... παρα πολλες φορες...  :mellow: 

για ποιο λογο γινετε αυτο??? :fear:
Δημοσ.

Αν δε γράψεις όλο το log δε μπορούμε να καταλάβουμε ποιο είναι το πρόβλημα (το exception που πετάει). Βέβαια είναι λογικό να αναφέρει πολλές φορές αυτή τη μέθοδο, αφού την καλείς αναδρομικά, άρα το exception περνάει απ όλη τη stack με τις μεθόδους που κάλεσες και δεν τερμάτισαν.

 

Μήπως είναι exception για stack overflow;

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

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

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

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

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

Σύνδεση

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

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