想问一下这里到底出了什么问题

package 数;

import java.util.Scanner;

public class Zuixiaozhi {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] x=new int[5];
    int max = x[0],min=x[0],s=0;
    for(int i=0;i<x.length;i++) {
        if(max<x[i])
            max=x[i];
        if(x[i]<min)
            min=x[i];
        s=s+x[i];
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        x[i]=scanner.nextInt();
    }
    System.out.println("最大值为"+max+",最小值为"+min+",和为"+s);
}

}
结果如下
请输入一个数
5
请输入一个数
0
请输入一个数
7
请输入一个数
6
请输入一个数
4
最大值为0,最小值为0,和为0

要先输入再判断,而不是上来就判断,在输入之后给min赋值

img

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] x=new int[5];
    int max = x[0],min=x[0],s=0;
    for(int i=0;i<x.length;i++) {
          Scanner scanner=new Scanner(System.in);
          System.out.println("请输入一个数");
          x[i]=scanner.nextInt();
          min=x[0];
        if(max<x[i])
            max=x[i];
        if(x[i]<min)
            min=x[i];
        s=s+x[i];
      
    }
    System.out.println("最大值为"+max+",最小值为"+min+",和为"+s);

}

这段代码存在以下问题:

  1. 数组x没有初始化,即没有给数组元素赋值,所以在比较大小和计算和的时候会出现错误。

  2. 在输入数字的时候,应该先让用户输入,再将输入的数字赋值给数组元素,否则会出现数组越界的问题。

  3. 在计算最大值和最小值的时候,应该在输入数字之后再进行比较,否则会出现错误。

  4. 缺少对输入数字的判断,如果用户输入的不是数字,程序会出现异常。

下面是修改后的代码:

public static void main(String[] args) {
    int[] x = new int[5];
    int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE, s = 0;
    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < x.length; i++) {
        System.out.println("请输入第" + (i + 1) + "个数");
        x[i] = scanner.nextInt();
        if (x[i] > max)
            max = x[i];
        if (x[i] < min)
            min = x[i];
        s += x[i];
    }
    System.out.println("最大值为" + max + ",最小值为" + min + ",和为" + s);
}