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++)

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

i因为当变量等于时,您试图访问数组外部的项目,names.length因为数组的索引从0to开始array's length - 1

于 2012-11-15T15:11:04.580 回答
0

将循环更改为

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

此外,为什么需要count变量作为方法参数之一。你没有使用它。

于 2012-11-15T15:03:08.467 回答