欢迎来访...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数组中的最小值为什么总是0

Posted on 2014-03-19 00:58  天赐绝尘  阅读(447)  评论(0编辑  收藏  举报

下面程序运行为什么出现的最值中为什么最小值总是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,要是出入的值有正、有负,那么将隐藏此问题的产生。