dimitrios67 Δημοσ. 16 Ιανουαρίου 2008 Δημοσ. 16 Ιανουαρίου 2008 εχω τον παρακάτω κώδικα και μου δινει exception in thread main.... Ti mporei na gtaiei? (σιγουρα κατι ειναι με το initialization of the array grades[]...) Ευχαριστω εκ των προτερων... > Foithths.java class Foithths{ double[] grades; String name; Foithths(String name, int lessons){ this.name=name; double[] grades=new double[lessons]; for(int i=0;i<grades.length;i++) grades[i]=0.0; } public void setGrade(int lesson, double bathmos){ grades[lesson]=bathmos; } public double getGrade(int lesson){ return grades[lesson]; } public void printGrades(){ System.out.println(name); for(int i=0;i<grades.length;i++) System.out.println(grades[i]); } } Main.java class Main { public static void main(String args[]){ Foithths student=new Foithths("giorgos",10); System.out.println(student.name); student.printGrades(); //student.setGrade(1,8.0); } }
Επισκέπτης Δημοσ. 16 Ιανουαρίου 2008 Δημοσ. 16 Ιανουαρίου 2008 > Foithths(String name, int lessons){ this.name=name; double[] grades=new double[lessons]; for(int i=0;i<grades.length;i++) grades[i]=0.0; } Η γραμμή double[] grades=new double[lessons]; πρέπει να γίνει > grades=new double[lessons]; Ο λόγος είναι ότι ο τύπος της μεταβλητής grades ορίζετε στην αρχή της κλάσης ( double[] grades; ) οπότε όταν ορίζεις ξανά την μεταβλητή μέσα στον constructor κρύβεις το μέλος grades της κλάσης με την τοπική μεταβλητή grades (που τυχαίνει να είναι αντικείμενο τύπου array και να έχει το ίδιο όνομα)
Γηρυόνης Δημοσ. 16 Ιανουαρίου 2008 Δημοσ. 16 Ιανουαρίου 2008 Το άλλο που μπορείς να κάνεις είναι > double[] grades=new double[lessons]; this.grades = grades;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.