繁体   English   中英

在Java中填充数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM