如何找到随机数组的最大值和最小值?

时间:2015-09-03 21:19:31

标签: java

   public class ArrayCalculations
   {
      public static void main(String[]  args)
      {

         int sum = 0, smallest, largest;
         double average;
         int[] array = new int[20];

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

            array[i] = (int)(Math.random() * 500 + 1);
            System.out.println(array[i]);
            sum += array[i];
            smallest = array[0];
            largest = array[];
            if(array[i]<smallest)
            {
               smallest = array[i];
            }
            if(array[i]>largest)
            {
            largest = array[i];
            }

         }
         average = 1.0*sum/array.length;

         System.out.println("Sum: " + sum);
         System.out.println("Average: " + average);
         System.out.println("Smallest: " + smallest);
         System.out.println("Largest: " + largest);
      }
   }

它一直说最小和最大可能没有被初始化。我不知道如何解决它。我尝试将最小和最大值设置为for循环之外的第一个数字,但是在数组中的所有数字都被初始化之前就没有用了......

3 个答案:

答案 0 :(得分:2)

您基本上将smallestlargest的值重置为for循环中的第一个元素(考虑largest = array[]是输入错误)。

是的,你需要在循环之外初始化它们。

smallest = Integer.MAX_VALUE;
largest = Integer.MIN_VALUE;
for(int i = 0; i < array.length; i++) {
    array[i] = (int)(Math.random() * 500 + 1);
    System.out.println(array[i]);
    sum += array[i];
    if(array[i] < smallest) smallest = array[i];
    if(array[i] > largest)  largest = array[i];
}

答案 1 :(得分:2)

这里有两个问题:

  • 在方法内部(例如main),您 无法 保留您打算稍后使用的未初始化的变量。 Java没有初始化这些变量的原因是由于跳过循环的可能性;即使在这种情况下不太可能,Java仍然认为它仍有可能。

  • 您在该列表中看到的最大值是负无穷大,您在该列表中看到的最小值是无穷大(也就是说,您不会确切地知道潜伏的地方)。将这两个变量初始化为最小值和最大值。

    int sum = 0, smallest = Integer.MAX_VALUE, largest = Integer.MIN_VALUE;
    

答案 2 :(得分:1)

myModule.animation('.show-hide-animation', function() {
  return {
    beforeAddClass : function(element, className, done) {
      if(className == 'ng-hide') {
        element.fadeTo(2500, 0, function() {
          done();
        });
        return function() {
          element.css('opacity', null);
        }
      } else {
        done();
      }
    },

    removeClass : function(element, className, done) {
      if(className == 'ng-hide') {
          element.fadeTo( 3000 , 0, function() {
            element.fadeTo( 2500 , 1, function() {
              done();
            });
          });      
        return function() {
          element.css('opacity', null);
        }
      } else {
        done();
      }
    }
  }
});

为什么要将 largest = array[]; ^^^^^^^ 作为一个数组,然后尝试将其视为一个简单的整数?

largest

更好的结构将是

        if(array[i]>largest)
           ^^^^^^^^----integer
                    ^^^^^^^---array

基本上,初始化OUTSIDE循环。