因为continue而忽略了数组for循环中的基本else语句



我试图理解如何在这个简单的程序中访问我的else语句,基本上,我要做的是循环通过随机数数组,如果找到项目文本将显示显示它已被找到。如果没有找到,我将继续进行下一个迭代。如果根本没有找到,则会跳出一条语句,解释在数组中没有找到该项。

import java.util.*;
public class practice {

      public static void main(String[] args) {
        int myA[] = new int[11];
        int toS = 59;
        Random  f = new Random();
        for(int j = 0; j < myA.length; j++){
          myA[j] = f.nextInt(10);
        }
        System.out.println("The array has");
        for(int x = 0; x < myA.length; x++){
          System.out.println(myA[x]);
        }
        System.out.println("Loop through elements");

        System.out.println("loop test");
        for(int u = 0; u < myA.length; u++){
            if(myA[u] == toS){
                System.out.println("Item found" );
                break;
            }
            if(myA[u] != toS){
                continue;
            }
            else{
                System.out.println("Item not in list");
                break;
            }
        }// end of loop
      }//After this no more code
    }
我是不是想太多了?我使用调试器来逐步执行这些过程,我看到continue语句是从循环中跳出来的,并且在没有传递到else语句的情况下结束。我该如何修正迭代?如果我删除continue块,代码将只检查第一次迭代。

感谢大家的宝贵时间。

你不应该在循环中使用continue

    boolean itemFound = false;
    for(int u = 0; u < myA.length; u++){
            if(myA[u] == toS){
                itemFound = true;
                break;
            } 
        }// end of loop
    if (itemFound) {
        System.out.println("Item found" );
    } else {
        System.out.println("Item not in list");
    }

没有输入else语句,因为它已经被前面的if语句覆盖,该语句从循环中中断:

        if(myA[u] == toS){
            System.out.println("Item found" );
            break;
        }
        if(myA[u] != toS){
            continue;
        }
        else{ // myA[u] == toS - never happens, since previous if statement broke from the loop
            System.out.println("Item not in list");
            break;
        }

你的逻辑可以这样处理,使用布尔变量:

    boolean found = false;
    for(int u = 0; u < myA.length; u++){
        if(myA[u] == toS){
            System.out.println("Item found" );
            found = true;
            break;
        }
    }
    if (!found) {
        System.out.println("Item not in list");
        break;
    }

注意,只有在循环结束后才能检查条目是否被找到。

看下面的代码片段

  if(myA[u] == toS){
         System.out.println("Item found" );
         break;
    }
   if(myA[u] != toS){
                    continue;
   }

在任何可能的情况下,toS将等于或不等于myA[u],

如果它相等,那么当'break'语句执行时,它从for循环中退出,如果不相等,则执行continue语句因此它从常规迭代循环中退出

所以你的else循环永远不会运行,因为没有任何条件使两个if循环中的一个不执行

希望这对你有帮助!

祝你好运!

最新更新