2

私は他の質問を見ましたが、ここで直面している問題は正確ではありません。これは私が持っている現在のコードです

public class Qn3 {
    public static void displayHighestMark(String[] names,int[] marks, int count)
    {
        int mark = 0;
        int currentArrayPosition;
       for(int i=0;i <= names.length;i++)
       {

          if(mark <= marks[i])
              mark = marks[i];
          currentArrayPosition  = i;
       }
       System.out.println(name[i]+" with marks "+mark);
    }

    public static void main(String[] args)
    {
        String[] names = new String[]{"jack","hello","A","b","c","d"};// = new String[];

         int[] marks = new int[]{1,2,3,8,5,6};
        displayHighestMark(names,marks, 45);
    }

}

つまり、基本的には、マーク配列で最も高いマークを見つけようとしています。しかし、私はArrayIndexOutOfBoundsExceptionの期待を得ています

4

3 に答える 3

5
 for(int i=0;i <= names.length;i++)

する必要があります

 for(int i=0;i < names.length;i++)

marks取得した範囲外のインデックスを取得しようとしているためですArrayIndexOutOfBoundsException。配列インデックスは0から始まるため、ループとルックアップを実行するときは、<代わりに常に検索する必要があります<=

このチュートリアルをお読みください。

編集:

if(mark <= marks[i])
{
              mark = marks[i];
          currentArrayPosition  = i;
}
于 2012-11-15T14:59:40.023 に答える
0

ループをに変更

for(int i=0;i < names.length;i++)

countさらに、メソッドパラメータの1つとして変数が必要なのはなぜですか。あなたはそれを使用していません。

于 2012-11-15T15:03:08.467 に答える
0

変更する必要があります

for(int i=0;i <= names.length;i++)

for(int i=0;i < names.length;i++)

iなぜなら、変数が等しいときに配列の外部のアイテムにアクセスしようとしているnames.lengthのは、配列のインデックスがからから始まっているからです0array's length - 1

于 2012-11-15T15:11:04.580 に答える