Jump to content

Recommended Posts

Posted

Χθες,σας είχα πει οτι θα σας κάνω έναν οδηγό για πίνακες,απλούς και πολυδιάστατους([],[][]) αλλά μετά σκέφτηκα ότι πολλοί απο εσάς δεν ξέρετε να χρησιμοποιείτε την switch,και σε πολλούς κώδικες βλέπω πάρα πολλά ||.

Αφήνω το μπλά μπλά,ας αρχίσουμε με τα γενικά σχετικά με την switch.

 


 

Τι δεν πρέπει να κάνετε,πάρτε για παράδειγμα τον παρακάτω κώδικα:

if (activeChar.getPvPKills() == 100)
     activeChar.setTittle("Newbie");
else if (activeChar.getPvPKills() == 150)
     activeChar.setTittle("Newbie1");
else if (activeChar.getPvPKills() == 200)
     activeChar.setTittle("Newbie2");
else if (activeChar.getPvPKills() == 250)
     activeChar.setTittle("Newbie3");

 

και πάει λέγοντας.Προσοχή,ο παραπάνω κώδικας δεν είναι λάθος(ούτε και κανένας του ίδιου style),το θέμα είναι όμως ότι πρέπει να αρχίζετε σιγά σιγά να φτιάχνετε κώδικες όχι μόνο 'συντακτικά' σωστούς(δηλαδή να μην σας βγάζει κάποιο λάθος το eclipse) αλλά και να χρησιμοποιήτε την java για να codarete όσο πιο advanced μπορείτε.Το έχω ξαναπεί,και θα το λέω συνέχεια,η java είναι απο τις πιο εύκολες(αν όχι η ΠΙΟ ΕΥΚΟΛΗ) γλώσσα προγραμματισμού,πρέπει να το εκμεταλευτείτε αυτό,μέσω της javas μπορείς να κάνεις πάρα πολλά πράγματα,και στο κάτω κάτω βγάζεις και αρκετά λευτά μέσω της java πουλώντας διάφορους κώδικες(και φυσικά όχι μόνο για l2j) κλπ.

Τέρμα το μπλά μπλά,ας συνεχίσουμε.

 

Τώρα θα σας κάνω ένα παράδειγμα με το switch(θυμάμαι το συγκεκριμένο ήτανε το πρώτο που είχα κάνει όταν μάθαινα και εγώ switch :P)(δεν έχει σχέση με l2j,αλλά είναι το ίδιο πράγμα,μην σκαλώσετε)

 

switch (grade){
case 'A':
         System.out.println("Great");
         break;
case 'B':
         System.out.println("Good");
         break;
case 'C':
         System.out.println("you can do better");
         break;
  default:
          System.out.println("You cheated,moron!");
}

 

Εγώ είμαι στην πρώτη περίπτωση 8)

 

Τώρα θα σας εξηγήσω την κάθε γραμμή του παραπάνω κώδικα:

Όπως βλέπετε,η switch δημιουργείται με βάση έναν έλεγχο(ΠΑΝΤΑ).Η μεταβλητή αυτή(του ελέγχου), μπορεί να είναι οτιδήποτε απο τα παρακάτω(byte,short,int,char), συγκίνεται με την σειρά με κάθεμια απο τις περιπτώσεις(δηλαδή με τις τιμές 'case').Προφανώς,εαν βρεθεί κάποιο ταίριασμα εκτελείται η πρόταση ή οι προτάσεις που είναι μετά τον έλεγχο.

Στο παράδειγμα μας δηλαδή,εαν το ταίριασμα ήτανε η περίπτωση B τότε θα εκτελούνταν και η A,εάν ήτανε η Γ τότε θα εκτελούνταν και η Α και η Β και πάει λέγοντας,πιστεύω να το καταλάβατε αυτό :P.

 

Στην περίπτωση που δεν βρεθεί κάποιο ταίριασμα εκτελείται η πρόταση ή οι προτάσεις 'default'.Η default δεν είναι απαραίτητη,είναι προαιρετική,σε περίπτωση που δεν υπάρχει ταίριασμα για καμία απο τις περιπώσεις και δεν υπάρχει και default πρόταση τότε η πρόταση 'switch' ολοκληρώνεται χωρίς να εκτελέσει τίποτε(που είναι τελείως άχρηστο,για αυτό να κοιτάτε να το αποφεύγετε στους κώδικες σας).

 

Δεν μπορείται να χρησιμοποιήσετε long,float,string ή άλλα αντικείμενα μέσα σε μια μέθοδο switch,ούτε μπορείτε να ελεγξετε για άλλη σχέση εκτός τις ισότητας(μαλακία,ε?!)*.Για αυτό το λόγο η switch,με τόσους περιορισμούς περιορίζετε για πιο απλούς κώδικες(παραμένει όμως μια όχι και τόσο εύκολη μέθοδος).

 

*Δηλαδή,αυτό εδώ δεν μπορούμε να το κάνουμε με switch μέθοδο:

if (activeChar.getPvPKills() > 100)
     activeChar.setTittle("Newbie");
else if (activeChar.getPvPKills() > 150)
     activeChar.setTittle("Newbie1");
else if (activeChar.getPvPKills() > 200)
     activeChar.setTittle("Newbie2");
else if (activeChar.getPvPKills() > 250)
     activeChar.setTittle("Newbie3");

 

Τώρα όσο για το break,χωρίς μια πρόταση break σε μια 'ενότητα' case,όταν βρεθεί ενα ταίριασμα,τότε οι προτάσεις για αυτό το ταίριασμα και όλες οι προτάσεις μέσα στη switch εκτελούνται,μέχρι να βρεθεί μια break ή να τελειώσει η switch.

 

Και τώρα κάτι τελευταίο,αλλά αρκετά σημαντικό

Μια περίπτωση που είναι χρήσιμο να ΜΗΝ περιλάβετε μια break είναι όταν πολλαπλές τιμες πρέπει να εκτελέσουν τις ίδιες προτάσεις(δεν καταλάβατε; κοιτάξτε παρακάτω).

 

switch(x){
case 2:
case 4:
case 6:
case 8:
    System.out.println("Ο χ είναι ακαίρεος αριθμός.");
    break;
    default:
    System.out.println("Ο χ είναι μονος αριθμός.");
}

 

Η switch θα εκτελέσει τις πρώτες προτάσεις που θα βρει,δηλαδή στο παραπάνω κώδικα το 'ο χ ειναι ακαίρεος αριθμός' θα εκτυπωθεί(system.out.println) μόνο εάν έχει τιμές 2,4,6 ή 8.Για κάθε άλλη τιμή του x αυτό που θα εκτυπωθεί θα είναι το 'O x είναι μονός αριθμός.'.

 

Αυτά ήτανε πάνω κάτω,ειδικά το τελευταίο κομμάτι να το προσέξετε,ίσως μπερδευτείτε κάπως.

Posted

Κάθε μέρα και με έναν τόσο βοηθητικό οδηγό.

Πίστεψέ με, μου έλυσε μερικές περιέργειες, σε λάθη που είδα ότι έκανα.

Σίγουρα πολλοί θα βγουν ευχαριστημένοι από εδώ.

 

Και επειδή αυτό δεν είναι κάτι που θα το δεις μία η δύο φόρες και άντε τελείωσα, θα πρότεινα να γίνει ένα Collection με τους οδηγούς σου, και να πάει Sticky. Καιρός να αφαιρεθούν μερικοί παλαιοί και μισοεξηγημένοι οδηγοί.

+1 για την δουλειά σου. (Δεν ξέρω αν επιτρέπεται να σου ξαναδώσω από χθες, όμως αν είναι το διορθώνουν)

 

Καλή συνέχεια και ευχαριστούμε!!!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...