我正在尝试使用for循环跳过值。像
for (int i = 32; i <= 255 /* - but skip 128 to 159 */; i++)
{
char ascii = (char) i;
System.out.println(ascii);
}
有什么建议吗?
答案 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将遍历当前循环并转到下一个