User Tools

Site Tools


java:break_loop_statements

This is an old revision of the document!


Εντολές τερματισμού ή ελέγχου της ανακύκλωσης

Η εντολή break

Η εντoλή break τερματίζει την υφιστάμενη ανακύκλωση και θέτει την ροή του προγράμματος αμέσως μετά το τέλος της εντολής ανακύκλωσης. Η εντολή break έχει δύο μορφές την labeled και την unlabeled μορφή. Η unlabeled μορφή είναι η μορφή που γνωρίζετε από την γλώσσα C. Ένα της παράδειγμα της unlabeled μορφής δίνουμε παρακάτω.

BreakDemo.java
class BreakDemo {
    public static void main(String[] args) {
 
        int[] arrayOfInts = 
            { 32, 87, 3, 589,
              12, 1076, 2000,
              8, 622, 127 };
        int searchfor = 12;
 
        int i;
        boolean foundIt = false;
 
        for (i = 0; i < arrayOfInts.length; i++) {
            if (arrayOfInts[i] == searchfor) {
                foundIt = true;
                break;
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at index " + i);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

Η labeled μορφή της εντολής break έχει νόημα όταν έχουμε περισσότερες από μία εμφωλευμένες εντολές ανακύκλωσης while, do-while, for και θέλουμε να τερματίζουμε την εξωτερική ανακύκλωση. Ένα παράδειγμα χρήσης της εντολής labeled break μπορείτε να δείτε παρακάτω.

BreakWithLabelDemo.java
class BreakWithLabelDemo {
    public static void main(String[] args) {
 
        int[][] arrayOfInts = { 
            { 32, 87, 3, 589 },
            { 12, 1076, 2000, 8 },
            { 622, 127, 77, 955 }
        };
        int searchfor = 12;
 
        int i;
        int j = 0;
        boolean foundIt = false;
 
    search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

Η ροή του προγράμματος συνεχίζεται μετά τις δύο εντολές ανακύκλωσης for.

Η εντολή continue

Σε αναλογία με την εντολή for και η εντολή continue διαθέτει labeled και unlabeled μορφή. Δείτε τα παρακάτω παραδείγματα

ContinueDemo.java
class ContinueDemo {
    public static void main(String[] args) {
 
        String searchMe = "peter piper picked a " + "peck of pickled peppers";
        int max = searchMe.length();
        int numPs = 0;
 
        for (int i = 0; i < max; i++) {
            // interested only in p's
            if (searchMe.charAt(i) != 'p')
                continue;
 
            // process p's
            numPs++;
        }
        System.out.println("Found " + numPs + " p's in the string.");
    }
}
ContinueWithLabelDemo.java
class ContinueWithLabelDemo {
    public static void main(String[] args) {
 
        String searchMe = "Look for a substring in me";
        String substring = "sub";
        boolean foundIt = false;
 
        int max = searchMe.length() - 
                  substring.length();
 
    test:
        for (int i = 0; i <= max; i++) {
            int n = substring.length();
            int j = i;
            int k = 0;
            while (n-- != 0) {
                if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
                }
            }
            foundIt = true;
                break test;
        }
        System.out.println(foundIt ? "Found it" : "Didn't find it");
    }
}
java/break_loop_statements.1442573246.txt.gz · Last modified: 2015/09/18 09:47 (external edit)