我有这个循环,我正在迭代。我需要在每个位置检查一个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索引在此语句中抛出错误?
答案 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语句是要抛出异常。”通过本答案中的代码,您可以完全实现这一目标。