我正在编写一个程序,该程序应该从用户输入中获取五双并返回它们的平均值。

我希望程序接受类似

5.0 8.0 5.0 7.0 5.0


然后返回

6.0


这是我的代码:

import java.util.Scanner;

public class findAverage {
public static void main(String[] args){
    Scanner keyboard = new Scanner(System.in);

    // Initialise the array
    float[] numberArray;
    float total = 0;

    // Allocate memory for 5 floats
    numberArray = new float[5];

    for(int i = 0; i < 5; i++){
        numberArray[i] = keyboard.nextInt();
        total += numberArray[i];
    }

    // Find the average
    float average = total / 5;
    System.out.println(average);
    }
}


现在,该代码需要用户输入5次单独的时间并计算平均值。如何做到这一点,以便用户可以在同一行上输入5个浮点数,并让程序找到平均值?

最佳答案

如果您希望能够采用任意数量(N)的参数并计算平均值而没有O(N)内存复杂性,则可以使用以下内容。

只需确保在参数列表的末尾传递一个非数字即可,例如'a'或扫描仪不会忽略使其停止的其他任何内容。

public static void main(String[] args)
{

    Scanner keyboard = new Scanner(System.in);

    double avg = 0.0;
    for (int i = 1; ;i++)
    {
        if (!keyboard.hasNextDouble()) break;
        double next = keyboard.nextDouble();
        avg = (avg * (i - 1) + next) / i;
    }
    System.out.println(avg);
}

关于java - 如何从Scanner获取多个浮点并将其分别存储在Java中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42899551/

10-10 14:02