从用户数组输入中寻找最小值

时间:2019-11-13 23:53:35

标签: java arrays

假设要求用户输入工作日的双打,

double[] userInput= new double[5];
String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};

for(int index = 0; index <= 11; index ++) {
    System.out.println("Enter " + days[index] + " double amount: ");
    userInput[Index] = scan.nextDouble();
}

这使我们得到类似的东西

Enter Monday double amount: 
Enter Tuesday double amount:
Enter Wednesday double amount:
Enter Thursday double amount:
Enter Friday double amount:

给出用户值,如果必须使用该方法,如何找到最低的两倍

public static int getLowestDouble(double[] numArray){

}

这样,在主函数中,我可以为此打印消息调用getLowestDouble函数

System.out.println(days[] + " has the lowest value of " + getLowestDouble(userInput));

我尝试如下编写getLowestDouble方法

public static int getLowestDouble(double[] numArray){
double min = 0;
                double MINIMUM = 0;
                int MINIMUM_1 = 0;
                for (int i = MINIMUM_1; i < numArray.length; i++) {
                    if(MINIMUM_1 > numArray[i]) {
                        MINIMUM_1 = i;
                    }
                }
                return MINIMUM_1;
}

但是,我当然只能获得最高的价值。我已经知道这行不通,但是我知道必须显示尝试。

2 个答案:

答案 0 :(得分:2)

要获得最低的数字,请将数组中的第一个值存储为最低的值,然后连续检查数组中的其余值以查看它们是否小于当前的最低数字,如果是,则进行设置当前的最低编号到新的最低编号。

public static int getLowestDouble(double[] numArray){
    double lowest = numArray[0];
    for (double check : numArray)
        if (check < lowest)
           lowest = check;
    return (int) lowest; 
}

尽管如此,由于方法(int)中的返回类型,最终结果小数将被截断,因此您可能希望将其更改为双精度,并删除return语句中的整数。

答案 1 :(得分:0)

Java8 +解决方案如下:

public static double getLowestDouble(final double[] numArray) {
    return Arrays.stream(numArray).min().orElse(0);
}