计算数组最小值为何输出0?

计算数组最小值为何输出0?

根据老师的第2-5节:求数组元素的最大值这一节课程的代码内容进行延伸。代码如下:

public class SortDemo1 {
 
    public static void main(String[] args) {
    //定义一个整形数组。
        int[] arr=new int[10];
        //获取键盘输入信息。
        int max=arr[0];
        int min=arr[0];
        Scanner sc=new Scanner(System.in);
        //通过循环判断数值大小。
        for(int i=0;i<arr.length;i++) {
            System.out.print("请输入第"+(i+1)+"个数:");
            arr[i]=sc.nextInt();
            //求最大值。
            if(arr[i]>max) {
                max=arr[i];
            }
            //求最小值。
            if(arr[i]<min) {
                min=arr[i];
            }
        }
        System.out.print("数组中的最大值是:"+max+"\r");
        System.out.print("数组中的最小值是:"+min);
        sc.close();
    }

这里定义一个含有10个元素的数组。但不同的是,所有元素的值来源于用户输入。

我求了最大值没有问题,但是最小值为什么是0?请高手帮忙排查错误!谢谢!

正在回答

登陆购买课程后可参与讨论,去登陆

1回答
// 定义一个整形数组。
		int[] arr = new int[10];
		// 获取键盘输入信息。
		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < arr.length; i++)
		{
			System.out.print("请输入第" + (i + 1) + "个数:");
			arr[i] = sc.nextInt();
		}

		int max = arr[0];
		int min = arr[0];

		// 通过循环判断数值大小。
		for (int i = 0; i < arr.length; i++)
		{

			// 求最大值。
			if (arr[i] > max)
			{
				max = arr[i];
			}
			// 求最小值。
			if (arr[i] < min)
			{
				min = arr[i];
			}
		}
		System.out.print("数组中的最大值是:" + max + "\r");
		System.out.print("数组中的最小值是:" + min);
		sc.close();


  • HappyFirefly 提问者 #1
    非常感谢!
    2018-02-17 12:19:07
  • 最后一行<br>忽略掉哈。这是我修改你代码之后运行的测试过了。应该没问题。你自己的源代码错在忽略了数组初始化之后是有初值的。所以原先一开始的max=arr[0]=0;t同理min=0;所以你第一轮的循环中的条件实际就是arr[i]>0和arr[i]<0,后者在你输入的数非负的情况下是永远不会执行的。所有min就一直等于arr[0]的初值0
    2018-02-17 12:25:36
  • HappyFirefly 提问者 回复 我想跑路 #3
    阁下使用两个循环,第一个循环在接收用户输入的值得同时赋给了max和min变量初始值,解决了0的问题。第二个循环再次遍历结果,以达到比大小的目的。
    2018-02-19 07:23:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师