这个for循环定义了一个条件但后来忽略了它

时间:2013-09-08 00:01:20

标签: java string for-loop

/ 如果for循环进入i< numbers.length然后怎么会在i == numbers.length?它不会停止迭代在numbers.length-1? /

class Phone {
    public static void main(String args[]){
      String numbers[][] = {
        {"Tom", "535-5334"},
        {"Bill", "432-5432"}
      };

      int i;

      if(args.length != 1)
        System.out.println("Usage: java Phone <name>");
      else {
        for(i=0; i<numbers.length; i++) {
          if(numbers[i][0].equals(args[0])){
           System.out.println(numbers [i] [0] + ":" + numbers [i][1]);
           break;
          }
        }
      if(i == numbers.length)
        System.out.println("name not found");
      }
    }
}

这个例子在我的java入门书中,我不明白。如果for循环使用i&lt; = numbers.length

,那对我来说是有意义的

1 个答案:

答案 0 :(得分:1)

来自docs

for (initialization; termination; increment) {
 statement(s)
}
     

...每次迭代循环后都会调用增量表达式...

因此,如果在numbers数组中找不到名称,则for循环计数器i上升到numbers.length,终止numbers.length < numbers.length失败并且for循环退出

因此,循环出口处的i = numbers.length会打印出消息。

另一方面,如果在数组中找到了名称,则break之前的for循环i将到达numbers.length,并且不会打印该消息。