为什么它不起作用
您在分配任何值之前阅读day[0]。
你的代码
int[] day = new int[x];
int minValue = day[0];
int maxValue = day[0];
等价于
int[] day = new int[x];
int minValue = 0;
int maxValue = 0;
见https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.5:
每个 ... 数组组件在创建时都会使用默认值进行初始化。
对于int类型,默认值为0,即0。
您的代码仅适用于 max 是偶然的 :) 尝试在输入中输入 only 负 值,您的 max 也只会给出 0。
如何解决
强烈建议将计算部分与输入/输出分开。 Java 不能轻易地从一个方法返回两个值。您可以分别为max 和min 实现两个单独的方法,或者您可以在临时创建的 Tuple 对象中返回这两个值。
输入/输出部分:
final Scanner sc = new Scanner(System.in);
final int numberOfValues = sc.nextInt();
final int[] values = new int[numberOfValues];
for (int i = 0; i < numberOfValues; i++) {
values[i] = sc.nextInt();
}
System.out.println(minValue(values));
System.out.println(maxValue(values));
还有计算部分(看for-each循环https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html):
public int minValue(int[] array) {
int min = Integer.MAX_VALUE;
for (int value : array) {
if (value < min) {
min = value;
}
}
}
类似maxValue(),您现在可以轻松地自己完成。
您的程序仍然需要一些错误处理,例如当用户提供不一致的输入时。
您应该养成从编程载体一开始就将程序的计算部分和表示部分分开的习惯:) 您将生成更好的可维护程序,并且您也会更快地发现错误。