我的代码不工作,因为它总是将小值打印为0。提前感谢您的帮助。
public class Tests {
public static void main(String [] args){
int [] num=new int[10];
Random random= new Random();
//1st time both big and small value will be at 0
int big=num[0];
int small=num[0];
for(int i=0;i<num.length;i++){
num[i]=random.nextInt(10);
System.out.print(num[i] +" ");
if(num[i]>big){
big=num[i];
}
if(num[i]<small){
small=num[i];
}
}
System.out.println();
System.out.println("Big " + big);
System.out.println("Small " + small);
}
}
请参阅以下问题:良好结果:
5 1 1 3 8 3 5 1 1 0大8小型0
错误结果:6 8 8 1 7 5 2 6 8 4大8小型0
这是因为small
是0,并且每个随机值都将在0和10之间生成,所以0是最小的。
要修复它,请更改为
int small = Integer.MAX_VALUE;
启动int数组int [] num=new int[10];
时,它将zero(0)
分配给所有索引。
因此,当您让int small=num[0];
包含零(0(时
所以,无论值是多少,下面的块总是将small
比较为零(0(。所以,不要更改small
变量!
if(num[i]<small){
small=num[i];
}
分配int small=Integer.MAX_VALUE;
和int big=Integer.MIN_VALUE;
,那么它就会全部工作!
将int small
声明为:
int small = Integer.MAX_VALUE;
现在它会起作用的。
注意:而且最好将int big
声明为
int big = Integer.MIN_VALUE;
public class Test {
public static void main(String[] args) {
int[] num = new int[10];
Random random = new Random();
for (int i = 0; i < num.length - 1; i++) {
num[i] = random.nextInt(10);
}
//1st time both big and small value will be at 0
int big = num[0];
int small = num[0];
for (int i = 0; i < num.length - 1; i++) {
System.out.print(num[i] + " ");
if (num[i] > big) {
big = num[i];
}
if (num[i] < small) {
small = num[i];
}
}
System.out.println();
System.out.println("Big " + big);
System.out.println("Small " + small);
}
}
当您说int [] num=new int[10];
时,num
数组将在所有10个位置初始化为0,即num[0]=0,num[1]=0…
如其他人所建议的使用CCD_ 13
永远记住,当你将某个东西初始化为存储最大值的变量时,初始化一个像0这样的小值,对于一个小变量,用尽可能大的数字初始化它。