简体   繁体   English

如何在Java中打破while循环?

[英]How to break out of a while loop in java?

// Setup dummy array
    ArrayList<Integer> list = dateArray;
    int counter = 1;
    while (list.size() != 0) {
        for (int j = 1; j < list.size(); j++)
        {

            //System.out.println(list.get(0) + " and " + list.get(j));
            int difference = list.get(0) - list.get(j);
            if (difference <6){
                System.out.println(list.get(0) + " and " + list.get(j) + " and size is " +list.size() );    
                counter= counter +1;
                System.out.println ("Counter is " + counter);
                if (counter >= 4){
                    System.out.println ("j = " + j + " Counter =" + counter);   
                    if (j ==list.size()-1) {
                        System.out.println ("here " + counter); 
                        break;
                    }   
                }
            }
        }
        list.remove(0);
    };  

Output: 输出:

1 and 2 and size is 4  
Counter is 2  
1 and 3 and size is 4  
Counter is 3  
1 and 4 and size is 4  
Counter is 4  
here 4  
2 and 3 and size is 3  
Counter is 5  
3 and 4 and size is 2  
Counter is 6  
here 6  

Ideally, i want it to stop when Counter is 4 and don't go on to execute "2 and 3 and size is 3 " 理想情况下,我希望它在Counter为4时停止并且不要继续执行“ 2和3并且大小为3”

Much appreciated! 非常感激!

You need to use a label for the loop . 您需要为循环使用标签。 Please try below snippet : 请尝试以下代码段:

// Setup dummy array
    ArrayList<Integer> list = dateArray;
    int counter = 1;
outerwhileloop:
    while (list.size() != 0) {
        for (int j = 1; j < list.size(); j++)
        {

            //System.out.println(list.get(0) + " and " + list.get(j));
            int difference = list.get(0) - list.get(j);
            if (difference <6){
                System.out.println(list.get(0) + " and " + list.get(j) + " and size is " +list.size() );    
                counter= counter +1;
                System.out.println ("Counter is " + counter);
                if (counter >= 4){
                    System.out.println ("j = " + j + " Counter =" + counter);   
                    if (j ==list.size()-1) {
                        System.out.println ("here " + counter); 
                        break outerwhileloop;
                    }   
                }
            }
        }
        list.remove(0);
    };      

Just move the code to a method and call return. 只需将代码移至方法并调用return。 Or else, you can use something called labeled break . 否则,您可以使用称为标签break的东西。

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;
            }
        }
    }

You can use java label for that as: 您可以为此使用java标签:

    int x = 1;
    outerLoopLabel:
    while(x != 10) {
      int fact = 0;      
      for(int i=0;i <=x; i++) {        
        fact +=i;
        if(fact > 25) {
          break outerLoopLabel;    
        }
      }
      System.out.println("Number: "+ x + " and fact: " + fact);      
      ++x;      
    }

Output without label : 输出无标签:

Number: 1 and fact: 1
Number: 2 and fact: 3
Number: 3 and fact: 6
Number: 4 and fact: 10
Number: 5 and fact: 15
Number: 6 and fact: 21
Number: 7 and fact: 28
Number: 8 and fact: 36
Number: 9 and fact: 45

Output with label: 带标签的输出:

Number: 1 and fact: 1
Number: 2 and fact: 3
Number: 3 and fact: 6
Number: 4 and fact: 10
Number: 5 and fact: 15
Number: 6 and fact: 21

You can add a boolean variable like this: 您可以添加一个布尔变量,如下所示:

// Setup dummy array
ArrayList<Integer> list = dateArray;
int counter = 1;
boolean isBreak = false;
while (list.size() != 0 && !isBreak) {
    for (int j = 1; j < list.size(); j++)
    {

        //System.out.println(list.get(0) + " and " + list.get(j));
        int difference = list.get(0) - list.get(j);
        if (difference <6){
            System.out.println(list.get(0) + " and " + list.get(j) + " and size is " +list.size() );    
            counter= counter +1;
            System.out.println ("Counter is " + counter);
            if (counter >= 4){
                System.out.println ("j = " + j + " Counter =" + counter);   
                if (j ==list.size()-1) {
                    System.out.println ("here " + counter); 

                    isBreak = true;
                    break;
                }   
            }
        }
    }
    list.remove(0);
}; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM