java:break_loop_statements

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Εντολές τερματισμού και ελέγχου επανάληψης ====== ===== Η εντολή break ===== Η εντoλή **break** τερματίζει την υφιστάμενη επανάληψη και θέτει την ροή του προγράμματος αμέσως μετά το τέλος της εντολής επανάληψης. Η εντολή **break** έχει δύο μορφές, την //labeled// και την //unlabeled// μορφή. Η unlabeled μορφή είναι η μορφή που γνωρίζετε από την γλώσσα **C**. Ένα της παράδειγμα δίνουμε παρακάτω. <code java 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"); } } } </code> Η //labeled// μορφή της εντολής **break** έχει νόημα όταν έχουμε περισσότερες από μία εμφωλευμένες εντολές επανάληψης **while**, **do-while**, **for** και θέλουμε να τερματίζουμε την εξωτερική επανάληψη. Ένα παράδειγμα χρήσης της εντολής //labeled// **break** μπορείτε να δείτε παρακάτω. <code java 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"); } } } </code> Εκτελέστε τα προγράμματα για να διαπιστώσετε την λειτουργία της κανονικής και της //labeled// μορφής της εντολής **break**. Η ροή του προγράμματος συνεχίζεται μετά τις δύο εντολές επανάληψης **for**. ===== Η εντολή continue ===== Σε αναλογία με την εντολή ''for'' και η εντολή ''continue'' διαθέτει //labeled// και //unlabeled// μορφή. Δείτε τα παρακάτω παραδείγματα: <code java 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."); } } </code> <code java 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"); } } </code> Εκτελέστε τα προγράμματα για να διαπιστώσετε την λειτουργία της κανονικής και της //labeled// μορφής της εντολής **continue**. | Προηγούμενο: [[:java:loop_statements | Εντολές επανάληψης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:oop:introduction | Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό ]] |

java/break_loop_statements.1486751212.txt.gz · Last modified: 2017/02/10 18:26 by doufexi