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循环之外的第一个数字,但是在数组中的所有数字都被初始化之前就没有用了......
答案 0 :(得分:2)
您基本上将smallest
和largest
的值重置为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循环。