你好stackoverflow用户,我试图初始化并用数字填充我的数组,然后找到它的最大值,但是当我开始填充数组时,我得到零或相同的数字,我输入或ArrayIndexOutOfBoundsException或数组停止填充,我尝试了几天,但我真的不知道现在该做什么,我有逻辑上的错误,请帮忙。
public class Solution
{
public static void main(String[] args) throws Exception
{
int[] array = initializeArray();
int max = max(array);
System.out.println(max);
}
public static int[] initializeArray() throws IOException {
Scanner in = new Scanner(System.in);
int Numbers[] = new int[5];
if (in.hasNext())
{
for(int NumCntr = 0 ; NumCntr< Numbers.length ;NumCntr++)
{
Numbers[NumCntr] = in.nextInt();
}
System.out.println(Numbers);
}
return Numbers;
}
public static int max(int[] array) {
int maxt = 0;
for(int i=0;i < 5;i++)
{
if(array[i] > array[i+1])
maxt = array[i];
}
return maxt;
}
}
答案 0 :(得分:3)
数组大小为5,但在最低值为i
的情况下,您将其递增1,因此尝试访问array[5]
(array[4+1]
),这会导致您{ {1}}。
ArrayIndexOutOfBoundsException
答案 1 :(得分:0)
更改您的最高级别&#39;对此的方法。您正在将每一行与下一行进行比较。例如5,3,2,4,1最终会为4.您需要存储最高的一个,与之相比较,然后返回最后一个。
public static int max(int[] array) {
if(array.length == 0)
return; //array should have elements
int maxt = array[0];
for(int i=1;i < array.length;i++)
{
if(array[i] > maxt)
maxt = array[i];
}
return maxt;
}