下面程序运行为什么出现的最值中为什么最小值总是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 + " 最小值为:" + min); } }解答:
因为min、max在赋初值的时候并未引用数组内元素进行赋值(空),而是使用了一个空数组的元素为其赋值,int型数组的元素默认值都为0
所以当操作者输入数字全部都是正数的时候最小值总是0,当出入的值全部为负数的时候就将会得到最大值为0,要是出入的值有正、有负,那么将隐藏此问题的产生。