Java:如何终止循环内部的条件检查

Java:如何终止循环内部的条件检查,java,Java,我有一个数组列表,如图所示 我的要求是,如果列表中包含值“M”,我希望终止for循环中的条件检查(如图所示,等于检查),但希望继续该for循环中的进一步操作 这是我的节目 package com; import java.util.ArrayList; import java.util.List; public class Jai { public static void main(String args[]) { String flag = null;

我有一个数组列表,如图所示

我的要求是,如果列表中包含值“M”,我希望终止for循环中的条件检查(如图所示,等于检查),但希望继续该for循环中的进一步操作

这是我的节目

package com;

import java.util.ArrayList;
import java.util.List;

public class Jai {
    public static void main(String args[]) {
        String flag = null;
        ArrayList<String> list = new ArrayList<String>();

        list.add("M");
        list.add("M");
        list.add("M");
        list.add("F");
        list.add("M");
        list.add("M");
        list.add("M");
        list.add("F");

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).equals("M")) {
                flag = "M";
            } else {
                flag = "F";
            }
            // this is to indicate that i need to continue further operations
            // inside for loop
            System.out.println("Hi");

        }

        if (flag.equals("M"))
            System.out.println("This is M List");
        else
            System.out.println("This is F List");

    }
}
package-com;
导入java.util.ArrayList;
导入java.util.List;
公共类Jai{
公共静态void main(字符串参数[]){
字符串标志=null;
ArrayList=新建ArrayList();
列表。添加(“M”);
列表。添加(“M”);
列表。添加(“M”);
列表。添加(“F”);
列表。添加(“M”);
列表。添加(“M”);
列表。添加(“M”);
列表。添加(“F”);
对于(int i=0;i
该列表由其中的值M组成,因此我想将其视为M列表


上面的程序是为了简单起见,实际上列表中将包含Employee对象。

Add
continue处于If状态

if (list.get(i).equals("M")) {
                flag = "M";
                continue;
}

添加
继续处于If状态

if (list.get(i).equals("M")) {
                flag = "M";
                continue;
}

如果我理解正确,您需要测试列表是否包含“M”。实现这一点的干净方法不是使用for循环,而是简单地调用

if (list.contains("M"))
不过,为了回答您的问题,您可以使用

if (list.get(i).equals("M")) {
    flag = "M";
    break;
}
如果您实际上只想在元素不是M的情况下在循环中执行某些操作,请执行以下操作

for (int i = 0; i < list.size(); i++) {
    if (list.get(i).equals("M")) {
        flag = "M";
    } 
    else {
        flag = "F";
        doSomethingOnlyForNonMElements();
    }
}
for(int i=0;i
如果我理解正确,您需要测试列表是否包含“M”。实现这一点的干净方法不是使用for循环,而是简单地调用

if (list.contains("M"))
不过,为了回答您的问题,您可以使用

if (list.get(i).equals("M")) {
    flag = "M";
    break;
}
如果您实际上只想在元素不是M的情况下在循环中执行某些操作,请执行以下操作

for (int i = 0; i < list.size(); i++) {
    if (list.get(i).equals("M")) {
        flag = "M";
    } 
    else {
        flag = "F";
        doSomethingOnlyForNonMElements();
    }
}
for(int i=0;i
更改

for (int i = 0; i < list.size(); i++) { 
for(inti=0;i

for(int i=0;i
注意使用了
“M”.equals(flag)
,因此当
flag
空时,我们不会抛出
NPE

for (int i = 0; i < list.size(); i++) { 
for(inti=0;i

for(int i=0;i

注意使用
“M”.equals(flag)
,所以当
flag
null
时,我们不会抛出
NPE
,我想这就是你要找的

    boolean hasSeenM = false;

    for (int i = 0; i < list.size(); i++) {
        if ( !hasSeenM && list.get(i).equals("M")) {
            hasSeenM = true;
        }
        // this is to indicate that i need to continue further operations
        // inside for loop
        System.out.println("Hi");

    }

    if (hasSeenM)
        System.out.println("This is M List");
    else
        System.out.println("This is F List");
boolean hasSeenM=false;
对于(int i=0;i
我想,这就是你要找的

    boolean hasSeenM = false;

    for (int i = 0; i < list.size(); i++) {
        if ( !hasSeenM && list.get(i).equals("M")) {
            hasSeenM = true;
        }
        // this is to indicate that i need to continue further operations
        // inside for loop
        System.out.println("Hi");

    }

    if (hasSeenM)
        System.out.println("This is M List");
    else
        System.out.println("This is F List");
boolean hasSeenM=false;
对于(int i=0;i
我建议按以下方法操作

// Indicates whether the list has M or not
boolean hasM = false;

// Go over the entire list
for (int i = 0; i < list.size(); i++) {
    // Check if we found M within the list, if not, proceed
    // to checking if the current item has M in it.
    if (!hasM && list.get(i).equals("M")) {
        // The current item is M, set hasM to true
        hasM = true;
    }

    // this is to indicate that i need to continue further operations
    // inside for loop
    System.out.println("Hi");
}

正如JB Nizet答案中所述,您可以使用
list.contains(“M”)
在迭代之前测试列表是否有M,但是,除非迭代本身需要,否则它会不必要地将方法复杂性增加到O(2n)而不是O(n)。

我建议按以下方式执行

// Indicates whether the list has M or not
boolean hasM = false;

// Go over the entire list
for (int i = 0; i < list.size(); i++) {
    // Check if we found M within the list, if not, proceed
    // to checking if the current item has M in it.
    if (!hasM && list.get(i).equals("M")) {
        // The current item is M, set hasM to true
        hasM = true;
    }

    // this is to indicate that i need to continue further operations
    // inside for loop
    System.out.println("Hi");
}

正如JB Nizet答案中所述,您可以使用
list.contains(“M”)
在迭代之前测试列表是否有M,但是,除非迭代本身需要,否则它会不必要地将方法复杂性增加到O(2n)而不是O(n)。

continue是您要查找的关键字。..Change
for(inti=0;ifor(inti=0;i
continue是您要查找的关键字..将
for(inti=0;ifor(inti=0;i
他想继续循环的其余部分,但是,他需要的是
继续
,而不是
中断
@quetzalcatl,循环会像往常一样继续,op需要的是,如果得到
M
他就不需要任何东西了。问题中的代码将继续迭代。@user974802:your选项不清楚。请提供示例输入和输出。@JB Niset,列表将由EMployee对象组成,而不是字符串,为简单起见,我提供了示例。break将从整个for循环中终止我。不过,他希望继续循环的其余迭代,他希望的是
继续
,而不是
中断
@quetzalcatl,循环将一如既往地继续,op需要的是,如果它得到
M
,则他不需要任何东西。问题中的代码将继续迭代。@user974802: