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]分配值时,它可以工作。有谁可以帮助我吗?
答案 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 );
}