我已经查看了其他问题但不完全是我在这里遇到的问题, 这是我当前的代码
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的预期
答案 0 :(得分:5)
for(int i=0;i <= names.length;i++)
应该是
for(int i=0;i < names.length;i++)
因为您试图获取marks
索引超出范围ArrayIndexOutOfBoundsException
。数组索引从0开始,因此当您进行循环和查找时,总是需要查找<
而不是<=
请阅读tutorial。
修改强>
if(mark <= marks[i])
{
mark = marks[i];
currentArrayPosition = i;
}
答案 1 :(得分:0)
将循环更改为
for(int i=0;i < names.length;i++)
此外,为什么需要count
变量作为方法参数之一。你没有使用它。
答案 2 :(得分:0)
你应该改变
for(int i=0;i <= names.length;i++)
到
for(int i=0;i < names.length;i++)
因为当变量i
等于names.length
时,你试图访问数组外的项目,因为数组的索引从0
开始到array's length - 1
< / p>