在Java中循环迭代和跳过特定索引点

时间:2016-04-15 03:05:07

标签: java

我有这个循环,我正在迭代。我需要在每个位置检查一个int,除了两个没有int的点。我想提出跳过这些索引点的最佳方法。

for(int i = 0;i < 11;i++) {
    if(!Character.isDigit(number.charAt(i))){
        throw new SocSecException("At index "+i+" you should have a int ");
    }
}

我试图在建议中包含额外的if语句

if(i == 3 && i == 6 i++)

希望跳过3和6索引,但不会在检查中的任何地方抛出错误。

如何排除3索引和6索引在此语句中抛出错误?

3 个答案:

答案 0 :(得分:3)

只需将条件与if条件结合使用和运算符。

for(int i = 0;i < 11;i++) {
    if(i!=3 && i!=6 && !Character.isDigit(number.charAt(i))){
        throw new SocSecException("At index "+i+" you should have a int ");
    }
}

答案 1 :(得分:1)

根据我的理解,你需要一个OR条件

for(int i = 0; i < 11; i++)
{
     if ( i == 3 || i == 6 )
     {
          continue;
     }
     else if(!Character.isDigit(number.charAt(i)))
     {
        throw new SocSecException("At index " + i + " you should have an int             ");
     }
}

答案 2 :(得分:1)

编辑:

取决于。你还想在你的for循环中使用索引3和6处的元素做其他事吗?如果您这样做,那么您需要在当前if statement中包含一个条件。

如果您仍想使用元素3和6执行其他操作,但您不希望它们抛出异常,那么您必须这样做:

for(int i = 0; i < 11; i++) {
    if( i != 3 &&
        i != 6 &&
        !Character.isDigit(number.charAt(i))
       ) {
            throw new SocSecException("At index " + i + " you...");
    } 
}

否则,我认为最好在循环的开头添加if statement

for(int i = 0; i < 11; i++) {
    if( i == 3 || i == 6 ) {
        continue;
    }

    if( !Character.isDigit(number.charAt(i)) ){
        throw new SocSecException("At index " + i + " you...");
    }
}

这就是为什么我认为单独的if statement看起来比一个if statement中的多个条件更好:

跳过某些索引的最干净方法是在循环开头添加if语句。

如果i是某些特定索引之一continue

continue表示跳到循环的下一次迭代。

for(int i = 0; i < 11; i++) {
    if( i == 3 || i == 6 ) {
        continue;
    }

    if( !Character.isDigit(number.charAt(i)) ){
        throw new SocSecException("At index " + i + " you...");
    }
}

此方法可以保持循环的其余部分清洁,并清楚地说明您正在做什么。

想要将条件添加到现有if statement中。将其添加到现有的if statement中会使两个条件必须一起进行测试,因为有一些不明原因。

如果您将其分为两个if statements,那么很清楚每个if statement 负责的内容。这对其他程序员,您的教授,同事,尤其是您自己很重要。

查看你的代码,你想立即说,“哦,这个if语句是要跳过索引3和6,哦这个if语句是要抛出异常。”通过本答案中的代码,您可以完全实现这一目标。