0

まず、要約: 私は CodingBat.com でいくつかの基本的な問題 (初心者や私のようなさびた人にとっては良いこと) に取り組んでおり、「新しい」方法で配列をループすることにしました。

私は「さびた」と言った。

これは機能します:

public int arrayCount9(int[] nums) {
  int b=0;
  for(int i=0; i<nums.length;i++){
    if(nums[i]==9) b++;
  }
  return b;
}

これは動作しません:

public int arrayCount9(int[] nums) {
  int b=0;
   for(int i: nums){
     if(nums[i]==9) b++;
   }
  return b;
}

エラー: Exception:java.lang.ArrayIndexOutOfBoundsException: 9 (行番号:4)

*したがって、問題は if(nums[i]==9) b++; です。*

だから私の質問は:

1) *問題は何ですか? *

2) *だれか仕様参照を持っていますか? *

#2に関しては、グーグルを試しましたが、探しているものが見つかりませんでした。チュートリアルを使用しても、下にあるブードゥー教を完全に把握できていません.

よろしくお願いします。

問題へのリンクを編集

4

4 に答える 4

4

反復値をインデックスとして使用します。そのはず:

for(int i: nums){
    if(i==9) b++;
}

そのため、配列に配列サイズよりも大きな値がある場合、範囲外のインデックス例外が発生します。

于 2013-04-03T19:32:15.497 に答える
4

for each ループがどのように機能するかについて混乱しています。
これを実行して、問題を理解できるかどうかを確認してください

   for(int i: nums){
     System.out.println(i);
   }
于 2013-04-03T19:33:28.737 に答える
3

「新しい方法」で使用すると、配列にアクセスする必要がなくなり、ループ内の各項目の参照が既にあります。

public int arrayCount9(int[] nums) {
  int b=0;
   for(int i: nums){
     if(i == 9) b++;
   }
  return b;
}
于 2013-04-03T19:33:04.507 に答える