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赋值
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);
}
这段代码存在以下问题:
数组x没有初始化,即没有给数组元素赋值,所以在比较大小和计算和的时候会出现错误。
在输入数字的时候,应该先让用户输入,再将输入的数字赋值给数组元素,否则会出现数组越界的问题。
在计算最大值和最小值的时候,应该在输入数字之后再进行比较,否则会出现错误。
缺少对输入数字的判断,如果用户输入的不是数字,程序会出现异常。
下面是修改后的代码:
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);
}