程序应该在数组中生成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;
}
}
答案 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>