[英]filling an array in java
您好有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;
}
}
数组大小为5,但在以下循环中, i
最大值为1,因此将其递增1,因此尝试访问array[5]
( array[4+1]
),这将导致ArrayIndexOutOfBoundsException
。
for(int i=0;i < 5;i++)
{
if(array[i] > array[i+1])
--------------------------------------^
maxt = array[i];
}
将您的“最大”方法更改为此。 您正在将每一行与下一行进行比较。 例如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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.