java - 第二个条件替代 for 循环

标签 java for-loop conditional-statements

是否可以在alternative for loop representation中添加第二个条件Java 的。

我有一个在 do-while 循环结束时更新的集合。在这个do-while循环中,有一个for循环

例如:(这不起作用,但说明了我想要实现的目标)

List<String> list =....load up with stuff

do {
    for (String string : list && counter < 5) 
    {
       System.out.println(string);
       counter++;
    }
while(update list)

以某种方式正常表示:

do {
    for (int i = 0; i < list.size() && counter < 5; i++)
    {
       System.out.println(list.get(i));
       counter++;
    }
while(update list)

在此结构中不起作用。

更新

我用这段代码尝试了两个答案:

      int counter = 0;

      List<String> list = new ArrayList<String>();
      list.add("a");
      list.add("b");
      list.add("c");
      list.add("d");
      list.add("e");

      System.out.println("Test one");

      for (String string : list) {
            if(counter < 3 )
                 System.out.println(string);
            else
                 break;
            counter++;
      }

      System.out.println("Test two");

      counter = 0;

      for (String string : list) {
          if (counter >= 3) break;
           System.out.println(string);
           counter++;
      }

TedHopp的答案解决了打破第一个循环的问题。

最终解决方案

跳出for循环跳出while循环,我最终做了以下事情:

int breakNow = false;

do {
    for (String string : list) 
    {
       System.out.println(string);
       counter++;

       if (counter >= 3) 
       { 
           breakNow = true;
           break;
       }
    }
while(update list && !breakNow)

最佳答案

您不能将二进制测试与增强的 for 循环结合起来;语法不允许。您需要使用传统的 for 循环语法,或者将 boolean 测试放入循环内并break 退出循环。

for (String string : list) {
   if (counter >= 5) break;
   System.out.println(string);
   counter++;
}

我不确定什么不适用于适用于增强型 for 循环的传统语法;他们本质上做同样的事情。 (事实上​​,由于增强的 for 循环使用迭代器,因此如果您异步更新列表,则会面临并发修改异常的风险。)

关于java - 第二个条件替代 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224551/

相关文章:

java - 以跨平台方式引用 tools.jar 的正确方法

java - 为 SimpleEntry 添加 Comparable 接口(interface)

java - "loops"是 Java 中的 "Conditional Statement"类型吗?

javascript - 条件中的类型强制更危险吗?

arrays - 在带有数组的语句中使用 OR,(C)

Bash:测试多个变量的相互相等性?

java - 在Linux中删除环境变量末尾的尾随bin/java

Java:无论应用服务器如何,通用访问资源文件

Python 通过跳过列表之间的值将值附加到空列表

java - 长度无法解析或不是字段