0

/ 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<=numbers.length を使用した場合、それは私には理にかなっています

4

1 に答える 1

1

ドキュメントから、

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

...インクリメント式は、ループの各反復後に呼び出されます...

numbersそのため、配列内に名前が見つからない場合、for ループ カウンターiは まで上がりnumbers.length、終了numbers.length < numbers.lengthは失敗し、for ループは終了します。

したがって、i = numbers.lengthループの出口でメッセージが出力されます。

一方、名前が配列内で見つかった場合、for ループは到達breakする前に終了し、メッセージは出力されません。inumbers.length

于 2013-09-08T00:10:39.707 に答える