此代码的目的是提示用户输入十个数字,将数字放入数组中,确定该数组中的数字是最小数字,并显示"最小数量为:[最小数量] "我的代码基本上完成了它的假设,但是当它涉及输出时,它在整个数组中给出一个0.0值直到结束,然后它给出最小数字。我不明白为什么会这样,并且已经尝试了我能想到的一切来修复它,但似乎没有任何效果。
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
new Question7_9().min(array);
}
}
public static void min(double[] array) {
double m = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (m > array[i]) {
m = array[i];
}
}
System.out.print("The minimum number is: " + m);
}
}
答案 0 :(得分:0)
在初始化整个数组之后(即在for循环之后),你应该找到最小值:
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
new Question7_9().min(array);
如果您在循环中调用min
方法,则会搜索至少array.length
次,并且除了最后一次搜索最小值0.0
时一个仍然有一些默认0.0
值的数组,因此除非您输入一些负数,否则最小值为{{1}}。
答案 1 :(得分:0)
这是因为每次用户输入数字时都会运行min(array)
方法。
只需在new Question7_9().min(array);
循环后写一行for
。
这是完整的运行程序,
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
new Question7_9().min(array);
}
public static void min(double[] array) {
double m = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (m > array[i]) {
m = array[i];
}
}
System.out.print("The minimum number is: " + m);
}
}
答案 2 :(得分:0)
值得注意的几点:
Question7_9
方法即可创建新的min
对象。它是public
static
,因此您可以使用Question7_9.min
甚至min
,因为您在同一个类中调用它。static
或public
。值得习惯使访问控制正确。for
语句有一个简写语法:for (double val: array)
Math.min
获取两个值中较小的值,而不是使用if
语句min
返回最小值而不是打印它更有意义。
min
方法将在空数组上抛出异常。最好检查一下或具有默认值(例如Double.POSITIVE_INFINITY); 将所有这些放在一起:
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
System.out.println("The minimum number is " + min(array));
}
private double min(double[] array) {
double min = Double.POSITIVE_INFINITY;
for (double value: array) {
min = Math.min(min, value);
}
return min;
}
}
只是为了让您体验Java 8流这种简单的事情:
Scanner input = new Scanner(System.in);
DoubleStream.generate(input::nextDouble).limit(10).min()
.ifPresent(min -> System.out.println("The minimum number is " + min));