This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
java:break_loop_statements [2015/09/18 10:47] gthanos created |
java:break_loop_statements [2017/02/10 18:27] (current) doufexi Αλλαγή ενός for σε break |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Εντολές τερματισμού ή ελέγχου της ανακύκλωσης ====== | + | ====== Εντολές τερματισμού και ελέγχου επανάληψης ====== |
| - | ==== Η εντολή break ==== | + | ===== Η εντολή break ===== |
| - | Η εντoλή **break** τερματίζει την υφιστάμενη ανακύκλωση και θέτει την ροή του προγράμματος αμέσως μετά το τέλος της εντολής ανακύκλωσης. Η εντολή **break** έχει δύο μορφές την //labeled// και την //unlabeled// μορφή. Η unlabeled μορφή είναι η μορφή που γνωρίζετε από την γλώσσα **C**. Ένα της παράδειγμα της unlabeled μορφής δίνουμε παρακάτω. | + | Η εντoλή **break** τερματίζει την υφιστάμενη επανάληψη και θέτει την ροή του προγράμματος αμέσως μετά το τέλος της εντολής επανάληψης. Η εντολή **break** έχει δύο μορφές, την //labeled// και την //unlabeled// μορφή. Η unlabeled μορφή είναι η μορφή που γνωρίζετε από την γλώσσα **C**. Ένα της παράδειγμα δίνουμε παρακάτω. |
| <code java BreakDemo.java> | <code java BreakDemo.java> | ||
| class BreakDemo { | class BreakDemo { | ||
| - | public static void main(String[] args) { | + | public static void main(String[] args) { |
| - | int[] arrayOfInts = | + | int[] arrayOfInts = |
| - | { 32, 87, 3, 589, | + | { 32, 87, 3, 589, |
| - | 12, 1076, 2000, | + | 12, 1076, 2000, |
| - | 8, 622, 127 }; | + | 8, 622, 127 }; |
| - | int searchfor = 12; | + | int searchfor = 12; |
| - | int i; | + | int i; |
| - | boolean foundIt = false; | + | boolean foundIt = false; |
| - | for (i = 0; i < arrayOfInts.length; i++) { | + | for (i = 0; i < arrayOfInts.length; i++) { |
| - | if (arrayOfInts[i] == searchfor) { | + | if (arrayOfInts[i] == searchfor) { |
| - | foundIt = true; | + | foundIt = true; |
| - | break; | + | break; |
| - | } | + | } |
| - | } | + | } |
| - | if (foundIt) { | + | if (foundIt) { |
| - | System.out.println("Found " + searchfor + " at index " + i); | + | System.out.println("Found " + searchfor + " at index " + i); |
| - | } else { | + | } else { |
| - | System.out.println(searchfor + " not in the array"); | + | System.out.println(searchfor + " not in the array"); |
| - | } | + | |
| } | } | ||
| + | } | ||
| } | } | ||
| </code> | </code> | ||
| - | Η //labeled// μορφή της εντολής **break** έχει νόημα όταν έχουμε περισσότερες από μία εμφωλευμένες εντολές ανακύκλωσης **while**, **do-while**, **for** και θέλουμε να τερματίζουμε την εξωτερική ανακύκλωση. Ένα παράδειγμα χρήσης της εντολής //labeled// **break** μπορείτε να δείτε παρακάτω. | + | Η //labeled// μορφή της εντολής **break** έχει νόημα όταν έχουμε περισσότερες από μία εμφωλευμένες εντολές επανάληψης **while**, **do-while**, **for** και θέλουμε να τερματίζουμε την εξωτερική επανάληψη. Ένα παράδειγμα χρήσης της εντολής //labeled// **break** μπορείτε να δείτε παρακάτω. |
| <code java BreakWithLabelDemo.java> | <code java BreakWithLabelDemo.java> | ||
| class BreakWithLabelDemo { | class BreakWithLabelDemo { | ||
| - | public static void main(String[] args) { | + | public static void main(String[] args) { |
| - | int[][] arrayOfInts = { | + | int[][] arrayOfInts = { |
| - | { 32, 87, 3, 589 }, | + | { 32, 87, 3, 589 }, |
| - | { 12, 1076, 2000, 8 }, | + | { 12, 1076, 2000, 8 }, |
| - | { 622, 127, 77, 955 } | + | { 622, 127, 77, 955 } |
| - | }; | + | }; |
| - | int searchfor = 12; | + | int searchfor = 12; |
| - | int i; | + | int i; |
| - | int j = 0; | + | int j = 0; |
| - | boolean foundIt = false; | + | boolean foundIt = false; |
| - | search: | + | search: |
| - | for (i = 0; i < arrayOfInts.length; i++) { | + | for (i = 0; i < arrayOfInts.length; i++) { |
| - | for (j = 0; j < arrayOfInts[i].length; | + | for (j = 0; j < arrayOfInts[i].length; j++) { |
| - | j++) { | + | if (arrayOfInts[i][j] == searchfor) { |
| - | if (arrayOfInts[i][j] == searchfor) { | + | foundIt = true; |
| - | foundIt = true; | + | break search; |
| - | break search; | + | |
| - | } | + | |
| - | } | + | |
| } | } | ||
| + | } | ||
| + | } | ||
| - | if (foundIt) { | + | if (foundIt) { |
| - | System.out.println("Found " + searchfor + " at " + i + ", " + j); | + | System.out.println("Found " + searchfor + " at " + i + ", " + j); |
| - | } else { | + | } else { |
| - | System.out.println(searchfor + " not in the array"); | + | System.out.println(searchfor + " not in the array"); |
| - | } | + | |
| } | } | ||
| + | } | ||
| } | } | ||
| </code> | </code> | ||
| - | Η ροή του προγράμματος συνεχίζεται μετά τις δύο εντολές ανακύκλωσης **for**. | + | Εκτελέστε τα προγράμματα για να διαπιστώσετε την λειτουργία της κανονικής και της //labeled// μορφής της εντολής **break**. Η ροή του προγράμματος συνεχίζεται μετά τις δύο εντολές επανάληψης **for**. |
| - | ==== Η εντολή continue ==== | + | ===== Η εντολή continue ===== |
| - | Σε αναλογία με την εντολή ''for'' και η εντολή ''continue'' διαθέτει //labeled// και //unlabeled// μορφή. Δείτε τα παρακάτω παραδείγματα | + | Σε αναλογία με την εντολή ''break'' και η εντολή ''continue'' διαθέτει //labeled// και //unlabeled// μορφή. Δείτε τα παρακάτω παραδείγματα: |
| <code java ContinueDemo.java> | <code java ContinueDemo.java> | ||
| class ContinueDemo { | class ContinueDemo { | ||
| - | public static void main(String[] args) { | + | public static void main(String[] args) { |
| - | String searchMe = "peter piper picked a " + "peck of pickled peppers"; | + | String searchMe = "peter piper picked a " + "peck of pickled peppers"; |
| - | int max = searchMe.length(); | + | int max = searchMe.length(); |
| - | int numPs = 0; | + | int numPs = 0; |
| - | for (int i = 0; i < max; i++) { | + | for (int i = 0; i < max; i++) { |
| - | // interested only in p's | + | // interested only in p's |
| - | if (searchMe.charAt(i) != 'p') | + | if (searchMe.charAt(i) != 'p') |
| - | continue; | + | continue; |
| - | // process p's | + | // process p's |
| - | numPs++; | + | numPs++; |
| - | } | + | |
| - | System.out.println("Found " + numPs + " p's in the string."); | + | |
| } | } | ||
| + | System.out.println("Found " + numPs + " p's in the string."); | ||
| + | } | ||
| } | } | ||
| </code> | </code> | ||
| Line 100: | Line 99: | ||
| <code java ContinueWithLabelDemo.java> | <code java ContinueWithLabelDemo.java> | ||
| class ContinueWithLabelDemo { | class ContinueWithLabelDemo { | ||
| - | public static void main(String[] args) { | + | public static void main(String[] args) { |
| - | String searchMe = "Look for a substring in me"; | + | String searchMe = "Look for a substring in me"; |
| - | String substring = "sub"; | + | String substring = "sub"; |
| - | boolean foundIt = false; | + | boolean foundIt = false; |
| - | int max = searchMe.length() - | + | int max = searchMe.length() - |
| - | substring.length(); | + | substring.length(); |
| - | test: | + | test: |
| - | for (int i = 0; i <= max; i++) { | + | for (int i = 0; i <= max; i++) { |
| - | int n = substring.length(); | + | int n = substring.length(); |
| - | int j = i; | + | int j = i; |
| - | int k = 0; | + | int k = 0; |
| - | while (n-- != 0) { | + | while (n-- != 0) { |
| - | if (searchMe.charAt(j++) != substring.charAt(k++)) { | + | if (searchMe.charAt(j++) != substring.charAt(k++)) { |
| - | continue test; | + | continue test; |
| - | } | + | |
| - | } | + | |
| - | foundIt = true; | + | |
| - | break test; | + | |
| } | } | ||
| - | System.out.println(foundIt ? "Found it" : "Didn't find it"); | + | } |
| + | foundIt = true; | ||
| + | break test; | ||
| } | } | ||
| + | System.out.println(foundIt ? "Found it" : "Didn't find it"); | ||
| + | } | ||
| } | } | ||
| </code> | </code> | ||
| + | Εκτελέστε τα προγράμματα για να διαπιστώσετε την λειτουργία της κανονικής και της //labeled// μορφής της εντολής **continue**. | ||
| + | | Προηγούμενο: [[:java:loop_statements | Εντολές επανάληψης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:oop:introduction | Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό ]] | | ||