试图找到Array Java的最小值

时间:2017-11-03 23:36:10

标签: java arrays

程序应该在数组中生成5个随机数,并在不同的方法中找到最大值和最小值。我对最大值没有任何问题,但每当我返回最小值时,我总是得到零。

public class ArrayMethods
{
    public static void main(String[] args)
    {
        System.out.print("The array is ");
        int[] arr = new int[1000];
        for (int i = 0; i < 5; i++)
        {
            arr[i] = (int)(Math.random() * 1000);
            System.out.print(arr[i] + " ");
        } 
        System.out.println("\nThe max is " + arrayMax(arr));
        System.out.println("The min is " + arrayMin(arr));
    }

    public static int arrayMax(int[] arr)
    {
        int arrayMax = arr[0];
        for(int i = 1; i < arr.length; i++)
        {
            if (arr[i] > arrayMax)
            {
                arrayMax = arr[i];
            }
        }
        return arrayMax;
    }  

    public static int arrayMin(int[] arr)
    {
        int arrayMin = arr[0]; 
        for(int i = 1; i < arr.length; i++)
        { 
            if  (arr[i] < arrayMin)
            { 
                arrayMin = arr[i]; 
            } 
        } 
        return arrayMin; 
    }
 }

5 个答案:

答案 0 :(得分:3)

arr是一个包含1000个条目的数组,默认情况下所有条目都初始化为零。你的循环将它们中的五个设置为一些随机正非零值,所以当你寻找最小值时,如果没有随机数为零,那么后面的一个零已经存在最小值。

答案 1 :(得分:2)

而不是:

int[] arr = new int[1000];

for (int i = 0; i < 5; i++)
{
  ..
}

使用:

int[] arr = new int[5];

for (int i = 0; i < arr.length; i++)
{
  ..
}

答案 2 :(得分:1)

您的数组被声明为具有1000元素,因此在初始化前五个元素之后; 5th索引中的剩余元素直到999将由零组成(因为如果您没有明确指定元素,这是整数数组的默认行为),因此最小值始终为0

你只需要这样做:

int[] arr = new int[5];

答案 3 :(得分:0)

您获得0是因为它是整数字段的默认值,并且由于您的数组大小为1000,因此存在值为0的整数。

答案 4 :(得分:0)

当然是你的。初始化一个包含1000个int值的数组(默认值为零),但只将前五个值设置为另一个值。 检入arrayMin时,检查所有1000个值,其中995个值为零。 正如Aominé评论的那样,您应该将数组的大小调整为要填充的值的数量。 在侧面,如果您不想使用内置的Collections.min / max方法,我会将arrayMax和arrayMin的初始值分别设置为Integer.MIN_VALUE(arrayMax)和Integer.MAX_VALUE(arrayMin)。 / p>