我正在编写一个程序,该程序应该从用户输入中获取五双并返回它们的平均值。
我希望程序接受类似
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/