Java数组最小和最大问题

时间:2013-11-21 15:29:26

标签: java arrays random numbers min

package array;
import java.util.*;
public class Array {

public static void main(String[] args) {
     int [] a = new int [10];
     Random number = new Random ();
     int x;
      int min, max ;
      min = max = a[0];

for (int b = 0; b<a.length; b++)
   {
       x = number.nextInt (100);
      // System.out.println (x); just for testing x

      a [b]= x;
       System.out.println (a[b]);

       if (a[b] < min) min = a[b];
       if (a[b] > max) max = a[b];
   }

 System.out.println ("Min is: " + min + " " + "Max is: "+ max );
}
}

当我设置 min = a [0]; max = a [0] 时,它只返回最大值,min始终为0;无法想象什么是错的。但是当我为[0] ... [9]分配值时,它可以工作。有谁可以帮助我吗?

4 个答案:

答案 0 :(得分:6)

number.nextInt (100);会在0 ans 99之间返回一个数字。由于您使用min初始化a[0];(在创建int数组时为0),因此总是得到0。

尝试使用min

初始化min = Integer.MAX_VALUE;

答案 1 :(得分:0)

我假设你只输入正数。为了使其按预期工作(我假设您希望得到最少的输入数字),请使用Integer.MAX_VALUE初始化min。

问题如下:

int [] a = new int [10];将创建一个10个整数的数组,由于元素是原始整数,因此它们初始化为0。

min = max = a[0];随后会将min初始化为0,即使x = number.nextInt (100);稍后可能只返回大于0的数字。

如果您尝试生成负数,即使用0初始化max也是错误的。因此,最好使用max初始化Integer.MIN_VALUE

答案 2 :(得分:0)

min = max = a[0];  // this statement initialize min variable with 0

if (a[b] < min) min = a[b]; // this statement will never execute because your are assigning new value to a[] on each index, even random class generate 0. 

答案 3 :(得分:0)

//if (a[b] < min) min = (a[b]);
//the condition is never met because the min value of x is always 0
package array;
import java.util.*;

public class Array {

    public static void main(String[] args) {
        int [] a = new int [10];
        Random number = new Random ();
        int x;
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;

        for (int b = 0; b<a.length; b++){
            x = number.nextInt (100);
            // System.out.println (x); just for testing x

            a [b]= x;
            System.out.println (a[b]);

            if (a[b] < min) min = a[b];
            if (a[b] > max) max = a[b];
        }

        System.out.println ("Min is: " + min + " " + "Max is: "+ max ); 
}