在循环中跳过数字

时间:2019-03-18 12:08:02

标签: java for-loop

我正在尝试使用for循环跳过值。像

for (int i = 32; i <= 255 /* - but skip 128 to 159 */; i++) 
{
    char ascii = (char) i;
    System.out.println(ascii);
}

有什么建议吗?

5 个答案:

答案 0 :(得分:8)

if(i >= 128 && i <= 159){
  // Will skip all these values.
  continue;
}

您可以在Java中的任何循环中使用continue关键字,这将导致控制流 jump 跳回到直接父循环。因此,对于您而言,对于介于128和159之间的所有i值,将永远不会执行下面的代码块。或者,如果您不喜欢此解决方案,则可以编写两个for循环并排除它们之间的范围,但是,如果您希望跳过多个范围或在其上施加更具体的条件,则可以说这更易于阅读,并且具有更大的灵活性。何时跳过i的值。

答案 1 :(得分:6)

如果您不想将循环分为两个循环(每个循环都有自己的范围),则可以使用Stream s:

IntStream.rangeClosed(32,255)
         .filter(i -> i < 128 || i > 159)
         .forEach(i -> System.out.println((char) i));

答案 2 :(得分:1)

添加一个if语句:

for(int i = 32; i <= 255; i++) {
      if(i < 128 || i > 159){
        char ascii = (char) i;
        System.out.println(ascii);
      }
    }

答案 3 :(得分:1)

有几种解决方案

第一次,您可以创建2个循环(1个循环从32到127,一个循环从160到255)

->这可能与您的情况有关

2您可以创建一个包含要迭代的索引的数组,然后可以在该数组上循环

第三,您可以使用关键字continue来跳过不满意的迭代

 for(int i = 32; i <= 255; ++i){
   if(i>=128 && i <= 159) {
     continue;
   }
   // do your stuff
  }

答案 4 :(得分:-1)

使用“ break”关键字添加条件,如下所示:

const newArray = this.state.postComments.slice();
// do your mapping changes here
this.setState({postComments: newArray});

关键字break将遍历当前循环并转到下一个