monkey90 Δημοσ. 19 Δεκεμβρίου 2011 Δημοσ. 19 Δεκεμβρίου 2011 Καλησπέρα, έχω φτίαξει έναν πίνακα 5 θέσεων int[] ArrayOutlaws = new int[5] και τον γεμίζω με την εντολή ArrayOutlaws[kati]+=1; αλλά μου βγάζει error. Για να χρησιμοποιήσω το ArrayOutlaws[kati]+=1; πρέπει πρώτα να βάλω 0 σε όλες τις θέσεις του?
virxen75 Δημοσ. 19 Δεκεμβρίου 2011 Δημοσ. 19 Δεκεμβρίου 2011 πριν την εντολή σου γράψε >System.out.println("kati="+kati); για να δεις την τιμή του kati προφανώς η τιμή του θα είναι εκτός ορίων π.χ. 5
anakiou Δημοσ. 19 Δεκεμβρίου 2011 Δημοσ. 19 Δεκεμβρίου 2011 Καλησπέρα, έχω φτίαξει έναν πίνακα 5 θέσεων int[] ArrayOutlaws = new int[5] και τον γεμίζω με την εντολή ArrayOutlaws[kati]+=1; αλλά μου βγάζει error Τι error βγάζει γιατί αυτό δεν φαίνεται λάθος Για να χρησιμοποιήσω το ArrayOutlaws[kati]+=1; πρέπει πρώτα να βάλω 0 σε όλες τις θέσεις του? Όχι, η default value των int είναι πάντα 0
monkey90 Δημοσ. 19 Δεκεμβρίου 2011 Μέλος Δημοσ. 19 Δεκεμβρίου 2011 Αυτή είναι η μέθοδος με το πρόβλημα και η από κάτω αυτήν που την καλεί.Το γαμότο είναι πως πριν βάλω στο παιχνίδι τους πίνακες(εκεί βγάζε το error) ArraysOutlaws και ArrayNinjas(τα χρειάζομαι για να εμφανίσω στο τέλος κάποια στατιστικα) η άσκηση έτρεχε μια χαρά! error:Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 39, Size: 38 > int[] ArrayOutlaws; int[] ArrayNinjas; public boolean inStation(int station, int numberOfStations, int numberOfWaggons, int wag, boolean checker) { ArrayOutlaws = new int[numberOfWaggons]; ArrayNinjas = new int[numberOfWaggons]; int size=0; int outlaws=0; int leavers=0; boolean check2; if(station==numberOfStations) { check2=false; if(checker) { size=ListWaggon.size(); for(int i=size-1; i!=-1; i--) { if(ListWaggon.get(i).isTicket()==false) { ListWaggon.remove(i); outlaws+=1; ArrayOutlaws[wag-1]+=1; } } } size=ListWaggon.size(); for(int i=0;i<size;i++) { ListWaggon.remove(0); leavers+=1; if(ListWaggon.get(i).isTicket()==false) { ArrayNinjas[wag-1]+=1; } } System.out.println("To vagoni " +wag +" exei " +ListWaggon.size() +" epivates"); System.out.println(" paravates: " +outlaws +", katevainoun: " +leavers +", mpainoun: " +0 +"." ); System.out.println(" Termatikos stathmos"); } else { if(station!=1) { if(checker) { size=ListWaggon.size(); for(int i=size-1; i!=-1; i--) { if(ListWaggon.get(i).isTicket()==false) { ListWaggon.remove(i); outlaws+=1; ArrayOutlaws[wag-1]+=1; } } } Random randGen = new Random(); int randepiv = randGen.nextInt(ListWaggon.size()); for(int i=0;i<randepiv;i++) { ListWaggon.remove(0); leavers+=1; if(ListWaggon.get(i).isTicket()==false) { ArrayNinjas[wag-1]+=1; } } } Random randGen2 = new Random(); int randepiv2 = randGen2.nextInt(100-ListWaggon.size()); for(int i=0;i<randepiv2;i++) { ListWaggon.add(new Passenger()); } Random randGen3 = new Random(); int randcheck = randGen3.nextInt(10); if(randcheck<4) { check2=true; } else { check2=false; } System.out.println("To vagoni " +wag +" exei " +ListWaggon.size() +" epivates"); System.out.println(" paravates: " +outlaws +", katevainoun: " +leavers +", mpainoun: " +randepiv2 +"." ); if(check2) { System.out.println(" Tha ginei elegxos eisithriwn."); } else { System.out.println(" De tha ginei elegxos eisithriwn."); } } return check2; } Η μέθοδος που την καλεί > public void operate(int numberOfWaggons, int numberOfStations) { boolean check=false,checker=false; boolean[] Arraybool = new boolean[numberOfWaggons]; for(int i=0;i<numberOfWaggons;i++) { Arraybool[i]=false; } for(int i=1;i<=numberOfStations;i++) { System.out.println(" "); System.out.println("To treno ftanei sto stathmo " +i); for(int j=1;j<=numberOfWaggons;j++) { checker=Arraybool[j-1]; check = ArrayTrain[j-1].inStation(i, numberOfStations, numberOfWaggons, j, checker); Arraybool[j-1]=check; if(check) { sumCharge += ArrayTrain[j-1].betweenStations(); } } } }
virxen75 Δημοσ. 19 Δεκεμβρίου 2011 Δημοσ. 19 Δεκεμβρίου 2011 στείλε όλο τον κώδικα να τον κάνω compile - run να δω τι γίνεται. αν δεν θες εδώ , στείλε τον με PM.
virxen75 Δημοσ. 19 Δεκεμβρίου 2011 Δημοσ. 19 Δεκεμβρίου 2011 ένα από τα λάθη είναι εδώ > public boolean inStation(int station, int numberOfStations, int numberOfWaggons, int wag, boolean checker) { ArrayOutlaws = new int[numberOfWaggons]; ArrayNinjas = new int[numberOfWaggons]; μηδενίζεις κάθε φορά τους πίνακες σου αφού τους δημιουργείς ξανά με κάθε κλήση της συνάρτησης σου, έτσι δεν εξυπηρετούν τον σκοπό για τον οποίο τους έχεις βάλει.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα