Java 如何使用用户双精度输入关闭while循环

Java 如何使用用户双精度输入关闭while循环,java,while-loop,average,Java,While Loop,Average,所以,免责声明,这是一门课,但我已经提交了作业,并向教授寻求帮助,所以我没有作弊或要求别人做作业。在这个过程中,我花了几个小时在这个网站上搜寻 我尝试获取多达52次的用户输入,将它们全部相加,然后求和的平均值 我创建了这个方法,允许用户根据代码中进一步输入的销售变量输入每周利润。我认为52个月的限制是好的,因为这将允许一个人平均工作2周,一个月,6个月,等等,就像他们试图预算或找到一个估计的年收入 //new method public static void computeAv

所以,免责声明,这是一门课,但我已经提交了作业,并向教授寻求帮助,所以我没有作弊或要求别人做作业。在这个过程中,我花了几个小时在这个网站上搜寻

我尝试获取多达52次的用户输入,将它们全部相加,然后求和的平均值

我创建了这个方法,允许用户根据代码中进一步输入的销售变量输入每周利润。我认为52个月的限制是好的,因为这将允许一个人平均工作2周,一个月,6个月,等等,就像他们试图预算或找到一个估计的年收入

    //new method
    public static void computeAverageSalesProfit() {       

        //new scanner object in method
        Scanner input = new Scanner(System.in);

        //new object
        Sales AvgProfit = new Sales();

        //prompt for input
        System.out.println("Please enter weekly profits, up to 52 weeks.  When finished, enter '-1.'");       

        //value to store input, and test against
        double value = 0;
        //new double array to sum together and average out
        double[] sum2 = new double[52];

        //while loop of doom
        while(value >= 0) {

        for (int i=0; i<sum2.length; i++) {
        value = input.nextDouble();
        sum2[i] = value + 0;

        }
        }

        double WeeklyProfits = 0;
        for (int i=0; i<sum2.length; i++) {
            WeeklyProfits = sum2[i] / sum2.length;
        }

        AvgProfit.setWeeklyProfits(WeeklyProfits);

        System.out.printf("Your average profits are %.2f", AvgProfit.getWeeklyProfits());

    }

您可以做的一件事是使用for循环,而不是使用while循环,如下所示:

//用于存储输入和测试的值
双值=0;
//新的双数组求和并求平均值
double[]sum2=新的double[52];
//最多重复52次

对于(int i=0;i查看您的代码,我认为while循环只有在
小于0时才会终止。但是,由于您更新了52次值,所以您输入变量的第52次时间必须小于0。我认为您想要的是用户能够输入最多52个数字,但不能超过52个。但是,如果他只想输入42个数字,那么他可以至于显式地通知程序,他已经输入了数字。这可以通过不同的方式来完成-读取“退出”行或“空行(又称“回车”)。但是,您必须在代码中实现这一点。我遗漏了一些代码,您得到了退出代码的东西(这里是“-1”)。while循环是不必要的。如果你读取了一个错误的值aka。“-1”,只需调用
break;
。这将退出for循环。非常感谢!我想得太多了…我试图使用一个不必要的循环。现在,我有另一个问题要问你…我的平均值(WeeklyProfits,是的,我需要将变量的首字母小写)吐出0。它在我的原始代码中。
//Check Year length separate, keeping original code mostly intact
    public static boolean isValid(String input)
    {
        //Does it have 4 digits?
        if(input.length() != 4)
            return false;

    // Is it a number ?
        try
        {
            Integer i = Integer.parseInt(input);
        }
        catch(NumberFormatException e)
        {
            return false;
        }

        // Passed all checks and is valid
        return true;
    }