我已经搜索了这个具体问题的答案,但还没找到任何东西。我需要找到输入数字的最大值和最小值,但我需要的值在for循环中,我无法弄清楚如何在它之外使用它们。
System.out.print("How many numbers do you want to input?");
int totalNumbers = console.nextInt();
int minMax = 0;
for(int i = 1; i <= totalNumbers; i++){
System.out.print("Number " + i + ": ");
int inputNumbers = console.nextInt();
}
System.out.println();
int smallest = Math.min(minMax);
System.out.println("Smallest = " + smallest);
int largest = Math.max(minMax);
System.out.println("Largest = " + largest);
我不需要更改代码就能使我走上正轨。谢谢!
答案 0 :(得分:4)
你能注意到以下循环的问题吗?
for(int i = 1; i <= totalNumbers; i++){
System.out.print("Number " + i + ": ");
int inputNumbers = console.nextInt();
}
您正在运行循环totalNumbers
次,并且每次创建名为int
的新inputNumbers
并存储从控制台收到的值。还在哪里更改minMax
的值?此外Math.min(or max)
不会采用单一参数,甚至不会编译。
现在你有几个选择:
我不是在写任何解决方案,因为我希望你自己尝试一下。
答案 1 :(得分:4)
根据oracle文档,Math.min()和Math.max()方法只能比较两个值。将值导入数组,然后对数组执行操作,应该可以很容易地找到最小值和最大值,以及任何其他数据操作。
int[] numbers = new int[totalNumbers];
for (int i = 0; i < totalNumbers; i++) {
numbers[i] = console.nextInt();
}
//Other Operations
答案 2 :(得分:3)
除非我误读了您想要的内容,否则您只能在for循环的外部维护一个变量并检查它们吗?
int minMax = 0;
int smallest = 0;
int largest = 0;
for(int i = 1; i <= totalNumbers; i++){
System.out.print("Number " + i + ": ");
int inputNumbers = console.nextInt();
if(inputNumbers > largest){
largest = inputNumbers;
} else if (inputNumbers < smallest){
smallest = inputNumbers;
}
}
System.out.println();
System.out.println("Smallest = " + smallest);
System.out.println("Largest = " + largest);
这是检查输入值并确定它们是当前已知的最小值还是最大值的最直接和最合理的方式(编辑:除非您要求使用Math.minMax
)
答案 3 :(得分:2)
伪代码:
smallest := +∞
largest := -∞
for each number read, n:
if n > largest:
largest := n
if n < smallest:
smallest := n
print the results
提示:
Java int
s不能代表±∞。请改用Integer.MIN_VALUE
和Integer.MAX_VALUE
。
答案 4 :(得分:1)
你可以通过将if else条件放入for循环中来实现...比如