- Μπορούμε να εκτελέσουμε ορισμένες εντολές υπό συνθήκη με τη
δομή ελέγχου if.
- Αυτή χρησιμοποιείται ως εξής:
if (συνθήκη)
εντολή;
- Όπως και με τις εντολές while και do όταν θέλουμε να εκτελέσουμε πάνω
από μια εντολή υπό συνθήκη περικλείουμε όλες τις αντίστοιχες εντολές μέσα σε
αγκύλες "{" και "}":
if (συνθήκη) {
εντολή1;
εντολή2;
εντολή3;
}
- Οι εντολή που ακολουθεί το if εκτελείται αν η συνθήκη είναι
αληθής.
Παράδειγμα (υπολογίζει και τυπώνει την απόλυτη τιμή των αριθμών που διαβάζει
μέχρι να συναντήσει το 0):
import gr.aueb.dds.BIO;
class MakePositive {
public static void main(String args[]) {
int num;
do {
num = BIO.readInt();
if (num < 0)
num = -num;
BIO.println(num);
} while (num != 0);
}
}
- Η δομή ελέγχου if μπορεί να ακολουθηθεί και από τη δομή else
για να προσδιορίσουμε εντολές που θα εκτελεστούν αν η συνθήκη δεν
ισχύει.
Παράδειγμα:
if (grade >= 5)
BIO.println("Περνάει");
else
BIO.println("Απορρίπτεται");
- Χρειάζεται προσοχή όταν η else ακολουθεί δύο συνεχόμενες if.
Στην περίπτωση αυτή, η else συσχετίζεται με την κοντινότερη if.
Για να εκφράσουμε διαφορετική συσχέτιση πρέπει να χρησιμοποιήσουμε
αγκύλες { }.
Παράδειγμα (τυπώνει μόνο όταν η μεταβλητή printed είναι ψευδής):
if (exam >= 5) {
if (!printed)
BIO.println("Περνάει");
} else
if (!printed)
BIO.println("Απορρίπτεται");
printed = true;
Το παρακάτω παράδειγμα (χωρίς αγκύλες) δεν εκτελείται σύμφωνα με τον
τρόπο που είναι στοιχισμένο
if (exam >= 5)
if (!printed)
BIO.println("Περνάει");
else
if (!printed)
BIO.println("Απορρίπτεται");
printed = true;
αλλά ως εξής (δεν τυπώνει ποτέ "Απορρίπτεται"):
if (exam >= 5)
if (!printed)
BIO.println("Περνάει");
else
if (!printed)
BIO.println("Απορρίπτεται");
printed = true;
- Μπορούμε να συνδυάσουμε συνεχόμενα else if για πολλαπλούς
ελέγχους. Παράδειγμα:
if (grade >= 9)
BIO.println("'Αριστα!");
else if (grade >= 7)
BIO.println("Λίαν καλώς");
else if (grade >= 5)
BIO.println("Καλώς");
else
BIO.println("Κακώς");