我正在编写一个程序,该程序应该从用户输入中获取五倍并返回它们的平均值。
我希望程序能够输入像
这样的输入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个浮点数并让程序找到平均值?
答案 0 :(得分:1)
使用扫描仪无法做到这一点,但是......
你可以这样做:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Avg {
public static void main(String[] args) throws IOException {
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
float total = 0;
String line = keyboard.readLine();
String[] data = line.split("\\s");
for (int i = 0; i < data.length; i++) {
total += Float.parseFloat(data[i]);
}
// Find the average
float average = total / data.length;
System.out.println(average);
}
}
它将读取在一行中输入的所有浮点数并在您点击&#34;输入&#34;时打印平均值。
答案 1 :(得分:0)
如果您希望能够获取任意数量(N)的参数并计算没有O(N)内存复杂度的平均值,则可以使用以下内容。
只需确保在参数列表的末尾传递非数字,例如&#39; a&#39;或扫描仪不会忽略的任何其他内容。
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);
}