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

Απορία σε JAVA.. Δεν ξέρω τι πρέπει να κάνω ..


Dimitris_il_mix

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

Δημοσ.

Έχω το εξής κομμάτι κώδικα (το έχω απλοποιήσει πολύ). Έχω 2 κουμπιά (b1 και b2).. κάνοντας κλικ στο πρώτο γεμίζεται ένας πίνακας x με τιμές 1,2,3 κ.ο.κ. και κάνοντας στον δεύτερο θέλω να εμφανίζεται ο πίνακας. Χοντρικά έχω:

 

 

public void actionPerformed(ActionEvent e)

{

int i;

int x[]=new int [10];

 

if (e.getSource()==b1)

{

b2.setEnabled(true); // giati to b2 einai arxika disable

for (i=1;i<=10; i++)

x=i

}

 

if (e.getSource()==b2)

{

for (i=1;i<=10; i++)

system.out.println(x);

}

}

 

Το πρόβλημα μου είναι ότι όταν πατήσω το 2ο κουμπί (πατάω πρώτα το 1ο ώστε να πάρει το x τις τιμές) ο πίνακας x φαίνεται σαν κενός. Δηλαδή οι τιμές που πήρε ο πίνακας με το πάτημα του κουμπιού 1 δεν φαίνονται στην συνέχεια.

Δημοσ.

Πατάς δηλαδή να γεμίσει ο πίνακας πρώτα και μετά με το πάτημα του δεύτερου κουμπιού δεν εμανίζει?

 

ακριβώς αυτό !! όταν πατήσω το κουμπί 2 είναι σαν να μην υπάρχουν τιμές στο πίνακα !!! δεν διατηρούνται δηλαδή..

Δημοσ.

Λογικό είναι αυτό που κάνει.

Κάθε φορά που πατάς το κουμπί, ο πίνακας σου δημιουργείται από την αρχή!

Δημοσ.

Επίσης άλλαξε το for σου δηλαδή απο for (i=1;i<=10; i++) σε for (i=0;i<10; i++)

 

Η αρίθμηση των πινάκων αρχίζει απο το μηδέν, βέβαια δε νομίζω έτσι να διορθωθεί το πρόβλημα σου, απλά απορώ πως δες σε βγάζει κανα σφάλμα IntexOutOfBounds όταν πατάς το πρώτο κουμπί.

 

Edit: Επίσης να ρωτήσω, έχεις αναθέσει και στα δυό σου κουμπιά το actionlistener?

Σίγουρα το χεις αντιγράψει σωστά εδώ επειδή δεν υπάρχει system.out.println(x); αλλα μόνο System.out.println(x);

Δημοσ.

int i;

int x[]=new int [10];

 

όπως ειπώθηκε ήδη το παραπάνω κομμάτι κώδικα θα πρέπει να το καλείς μόνο όταν πατάς το πρώτο κουμπί, όχι και το δεύτερο. Έτσι όπως το έχεις τώρα όταν πατάς το δεύτερο κουμπί δημιουργείς καινούρια κενή array και την εμφανίζεις.

Δημοσ.

όπως ειπώθηκε ήδη το παραπάνω κομμάτι κώδικα θα πρέπει να το καλείς μόνο όταν πατάς το πρώτο κουμπί, όχι και το δεύτερο. Έτσι όπως το έχεις τώρα όταν πατάς το δεύτερο κουμπί δημιουργείς καινούρια κενή array και την εμφανίζεις.

 

Σωστά δεν ξέρω πως μου ξέφυγε.... :confused:

+1 από εμένα

Δημοσ.

Αν δούμε αυτόν τον κώδικα:

 

public static void main(String args[]) {

int month_days[];

month_days = new int[12];

 

month_days[0] = 31;

month_days[1] = 28;

month_days[2] = 31;

month_days[3] = 30;

month_days[4] = 31;

month_days[5] = 30;

month_days[6] = 31;

month_days[7] = 31;

month_days[8] = 30;

month_days[9] = 31;

month_days[10] = 30;

month_days[11] = 31;

System.out.println("April has " + month_days[3] + " days.");

}

 

μάλλον έτσι είναι πιο σωστά:

 

int i;

int x[];

x = new int[10];

......

......

......

Δημοσ.

Επίσης άλλαξε το for σου δηλαδή απο for (i=1;i<=10; i++) σε for (i=0;i<10; i++)

 

Η αρίθμηση των πινάκων αρχίζει απο το μηδέν, βέβαια δε νομίζω έτσι να διορθωθεί το πρόβλημα σου, απλά απορώ πως δες σε βγάζει κανα σφάλμα IntexOutOfBounds όταν πατάς το πρώτο κουμπί.

 

Edit: Επίσης να ρωτήσω, έχεις αναθέσει και στα δυό σου κουμπιά το actionlistener?

Σίγουρα το χεις αντιγράψει σωστά εδώ επειδή δεν υπάρχει system.out.println(x); αλλα μόνο System.out.println(x);

 

'Technology fan' σωστός για το for σωστός και για το System.out !! Δεν τον έκανα copy paste.. το έγραψα γρήγορα για να σας δείξω παράδειγμα με το τι πρόβλημα έχω !! Με λίγα λόγια θέλω να κρατιούνται οι τιμές του πίνακα x και όταν πατήσω το 2ο κουμπί !! να μην χαθούν δηλαδή !!

Δημοσ.

Θα πρέπει η "μεταβλητή" - πίνακας σου να ειναι γενικη και οχι τοπικη για να εχεις προσβαση απο τα 2 κουμπια.

Δημοσ.

Θα πρέπει η "μεταβλητή" - πίνακας σου να ειναι γενικη και οχι τοπικη για να εχεις προσβαση απο τα 2 κουμπια.

 

Αντε πες τοοοο.

ορισε τον πινακα εξω απο τον listener....

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

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

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