所以我试图找到一个用户输入的数组的最小值和最大值。
这是我的密码
public static void main(String[] args) {
int[] a = new int[args.length];
for (int i = 0; i < args.length; i++) {
a[i] = Integer.parseInt(args[i]);
int max = a[0];
for (int j = 1; j < args.length; j++) {
if (a[j] > max) {
max = a[j];
}
}
System.out.println("the maximum value of the array is " + max);
}
}
但是我得到的输出是我输入的每一个数字,我错在哪里?
5条答案
按热度按时间amrnrhlw1#
让我们来看看这个过程。因为这是一个int数组,所以值被初始化为
0
。在第一个for循环中,我们将第一个int赋值给a[0]
。然后在第二个for循环中,我们检查数组中的每个值是否是最大值(因此检查第一个值是否为零),然后退出嵌套的for循环并打印语句(如果为正,则使用a[0]
的值)。现在我们经历了外部循环的第二个循环,如果这个值再次变大,这个值将被打印出来,否则第一个值将被重新打印出来(你的数组是按升序排列的吗?)。
如前所述,一个循环就足够了,并确保print语句在外部for循环之外
希望这能帮上忙
2vuwiymt2#
你只需要一个循环来检查数组。
下面是一个示例
tyu7yeag3#
你根本不需要循环,试试Streams:
输出为:
amrnrhlw4#
在你搜索更多的值之前,你没有完全填充数组。你不应该向前搜索。而且,你不应该在你确定
min
和max
之后才打印。如果你使用Java 8+,这个问题就容易解决了;将argsMap到int(s)并获得汇总统计信息。或修复当前代码,在循环外声明
min
和max
。在每个值上更新它们。然后显示结果。例如,bzzcjhmw5#