如何使我的for循环不显示消息,直到它到达数组的末尾

时间:2017-04-03 14:53:02

标签: java arrays for-loop

如何使我的for循环no显示消息,直到它到达数组的末尾。代码如下:

for (int j = 0; j < logic.rez.length; j++) {

    if (logic.rez[j] >= 20000000 && logic.rez[j] < 23000000) {
        do.this;
        break;
    } else {
        if(logic.rez.length==j){
           rez.append("Error message \n");
    }
}
break;

我尝试在循环之前将boolean matchFound设置为false,如果找到某些内容则将其设置为true,如果在循环之后它为false则打印错误消息但没有运气。我需要一些条件,只有在之后才会更改循环使数组结束

3 个答案:

答案 0 :(得分:1)

logic.rez.length==j永远不会发生,因为你的循环只会转到length-1(这就是符号的工作方式)。我认为你可以通过这样做来解决它 logic.rez.length-1==j

答案 1 :(得分:0)

根据您的逻辑,只要j的值等于logic.rez.length

,for循环就会结束
import re

def tokenize(text):
    return re.findall(r'[()|]|\w+', text)

def product(a, b):
    return [x+y for x in a for y in b] if a and b else a or b

def parse(text):
    tokens = tokenize(text)

    def recurse(tokens, i):
        factor = []
        term = []
        while i < len(tokens) and tokens[i] != ')':
            token = tokens[i]
            i += 1
            if token == '|':
                term.extend(factor)
                factor = []
            else:
                if token == '(':
                    expr, i = recurse(tokens, i)
                else:
                    expr = [token]
                factor = product(factor, expr)
        return term+factor, i+1

    return recurse(tokens, 0)[0]

string = "(A((B|C)D|E|F))"

print(parse(string))

因此下面的代码块是多余的 -

j < logic.rez.length

如果你想捕获循环到达数组末尾的条件,你可以 - 1)在for循环外声明变量j,并在for循环

后面有上面的代码块

答案 2 :(得分:0)

虽然您可以在循环内检查您是否已到达最后一个元素,但这并不理想。这种方法意味着您每次进行循环时都要检查是否在最后一个元素上。

这是一种更好的方法。当控制传递给循环后面的代码时,您知道您已到达循环的末尾。在循环之后放置时,您最多需要检查一次失败。

对于线性搜索,有一些反复出现的模式,包括以下内容。

找到匹配项时提前退货

int search( Foo[] f ) {
  for ( int i = 0; i < f.length; ++i ) {
     if ( matches( f[i] )) {
        return i;
     }
  }

  return -1;  // Nothing matched. Caller handles error.
}

带有布尔值的内联代码

boolean foundMatch = false;
for ( int i = 0; i < f.length; ++i ) {
  if ( matches( f[i] )) {
    foundMatch = true;
    // Handle match
    break;
  }
}

if ( ! foundMatch ) { 
  // Nothing matched. Handle error here.
}