Java 输出在数组中不断重复

Java 输出在数组中不断重复,java,arrays,numbers,min,minimum,Java,Arrays,Numbers,Min,Minimum,这段代码的目的是提示用户输入十个数字,将这些数字放入一个数组中,确定该数组中的哪个数字是最小数字,并显示“最小数字是:[最小数字]”。我的代码基本上是按照它的假设来做的,但当涉及到输出时,它会在整个数组中给出一个0.0值,直到最后,当它给出最小值时。我不明白为什么会发生这种情况,我已经想尽一切办法来解决它,但似乎没有任何效果 import java.util.Scanner; public class Question7_9 { public static void main(Str

这段代码的目的是提示用户输入十个数字,将这些数字放入一个数组中,确定该数组中的哪个数字是最小数字,并显示“最小数字是:[最小数字]”。我的代码基本上是按照它的假设来做的,但当涉及到输出时,它会在整个数组中给出一个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);

    }

}
import java.util.Scanner;
公开课问题7_9{
公共静态void main(字符串[]args){
double[]数组=新的double[10];
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入十个数字:”);
for(int i=0;i
初始化整个阵列后(即for循环后),应找到最小值:

for(int i=0;i

如果在循环中调用
min
方法,您将搜索最小
array.length
次,并且在除上次之外的所有时间中,您将在仍然具有一些默认
0.0
值的数组中搜索最小值,因此,除非您输入一些负数,否则最小值将为
0.0

这是因为每次用户输入数字时,您都在运行
min(array)
方法

只需写一行
newquestion7_9().min(数组)
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);

    }

}
import java.util.Scanner;
公开课问题7_9{
公共静态void main(字符串[]args){
double[]数组=新的double[10];
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入十个数字:”);
for(int i=0;i
有几点值得注意:

  • 只需调用
    min
    方法,就不需要创建新的
    Question7\u 9
    对象。它是
    公共的
    静态的
    ,因此您可以直接使用
    问题7\u 9.min
    ,甚至只使用
    min
    ,因为您在同一个类中调用它
  • 在您的情况下,它实际上不需要是
    静态的
    公共的
    。要习惯正确的访问控制是值得的
  • 与数组一起使用时,
    for
    语句有一种简写语法:
    for(double val:array)
  • 您可以使用
    Math.min
    获取两个值中的较小值,而不是使用
    if
    语句
  • min
    返回最小值比打印最小值更有意义。
    • min
      方法将在空数组上引发异常。最好检查该值或使用默认值(如Double.POSITIVE_∞)
把所有这些放在一起:

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;
    }
}

看一下快速排序。这是一个众所周知的排序算法,它将对数组进行排序。然后可以将数组的第一个索引显示为已排序的索引。
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;
    }
}
Scanner input = new Scanner(System.in);
DoubleStream.generate(input::nextDouble).limit(10).min()
    .ifPresent(min -> System.out.println("The minimum number is " + min));