下面程序运行为什么出现的最值中为什么最小值总是0?
这是一个来自论坛的问题,在此借助其代码分析此现象
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Compare {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] a = new int[3];
int min = a[0];
int max = a[0];
for (int i = 0; i < a.length; i++) {
try {
System.out.print("请输入第" + (i + 1) + "个数:");
a[i] = Integer.parseInt(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
for (int i = 0; i < a.length; i++) {
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
System.out.println("最大值为:" + max + "\n最小值为:" + min);
}
}解答:
因为min、max在赋初值的时候并未引用数组内元素进行赋值(空),而是使用了一个空数组的元素为其赋值,int型数组的元素默认值都为0
所以当操作者输入数字全部都是正数的时候最小值总是0,当出入的值全部为负数的时候就将会得到最大值为0,要是出入的值有正、有负,那么将隐藏此问题的产生。