从双数组中获取最小值不起作用

我试图从一系列双打中获得最小值和最大值。最大值工作正常,但最小值似乎总是为零。获得最低价值的最佳方法是什么?请注意,我不能在本练习中使用for循环,而是使用while循环。

public class LoopingFloats {
    public static void main(String[] args) {
        double[] inputHolder = new double[5];
        int inputCounter = 0;
        double total = 0.0d;
        double average = 0.0d;
        double maximum = 0.0d;
        double minimum = inputHolder[inputCounter];
        double interestRate = 0.20d;
        double interestAmount = 0.0d;
        Scanner scnr = new Scanner(System.in);
        while(inputCounter <= 4){
            System.out.println("Enter number " + (inputCounter + 1) + ": ");
            inputHolder[inputCounter] = scnr.nextDouble();
            if(inputHolder[inputCounter] >  maximum){
                maximum = inputHolder[inputCounter];
            }
            if(inputHolder[inputCounter] <  minimum){
                minimum = inputHolder[inputCounter];
            }
            total = total + inputHolder[inputCounter];
            inputCounter += 1;
        }
    }
        average = total / 5;
        interestAmount = total * interestRate;
        System.out.println("Total: " + total);
        System.out.println("Average: " + average);
        System.out.println("Maximum: " + maximum);
        System.out.println("Minimum: " + minimum);
        System.out.println("Interest for total at 20%: " + interestAmount);
    }}


尚方宝剑之说
浏览 537回答 3
3回答

慕村225694

问题出在这一行:double&nbsp;minimum&nbsp;=&nbsp;inputHolder[inputCounter];Java将新变量和新数组的所有元素初始化为0值。看这里。因此,默认情况下,您的minimum变量设置为0,如果您的数组的值大于0,则您的minimum变量将不会更新,因为0小于所有其他正值。您需要做的是将其设置为一个非常大的值,例如99999,或者您可以使用Double.MAX_VALUE它来为您提供double可以存储的最大值。

开满天机

除了变量的初始化之外,一切似乎都没问题minimum。在inputHolder[inputCounter] = scnr.nextDouble();语句后的while循环中初始化它inputHolder[inputCounter]&nbsp;=&nbsp;scnr.nextDouble(); if&nbsp;(inputCounter&nbsp;==&nbsp;0)&nbsp;minimum&nbsp;=&nbsp;inputHolder[inputCounter];希望这能解决你的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java