如何从Scanner中获取多个float并将它们分别存储在Java中?
我正在写一个程序,它应该从用户输入中提取五个双倍,然后返回它们的平均值 我想让程序接受这样的输入如何从Scanner中获取多个float并将它们分别存储在Java中?,java,arrays,floating-point,average,Java,Arrays,Floating Point,Average,我正在写一个程序,它应该从用户输入中提取五个双倍,然后返回它们的平均值 我想让程序接受这样的输入 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
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);
}
}
import java.util.Scanner;
公共类findAverage{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
//初始化数组
浮动[]数字射线;
浮动总数=0;
//为5个浮点数分配内存
numberArray=新浮点[5];
对于(int i=0;i<5;i++){
numberArray[i]=keyboard.nextInt();
总数+=数字射线[i];
}
//求平均数
浮动平均值=总计/5;
系统输出打印项次(平均值);
}
}
现在,该代码需要用户分别输入5次并计算平均值。如何使用户可以在同一行上输入5个浮点数,并让程序找到平均值?使用扫描仪是不可能的,但是 您可以这样做:
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);
}
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类平均值{
公共静态void main(字符串[]args)引发IOException{
BufferedReader键盘=新的BufferedReader(新的InputStreamReader(System.in));
浮动总数=0;
字符串行=键盘.readLine();
String[]data=line.split(\\s”);
对于(int i=0;i
它将读取在一行中输入的所有浮点值,并在您点击“回车”时打印平均值。如果您希望能够获取任意数量(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);
}
您可以在同一行中输入它们。之后只需按enter键,Java将立即处理所有结果。此外,您正在调用
nextInt
,同时将结果存储在类型为float
的数组中。不管怎么说,看起来你根本不需要数组。如何判断何时有行尾,因为当你按enter键时,这段代码不会计算任何内容。我告诉过你了。在末尾加一个非数字。比如说1234AOK,但是如果那样的话。。。你不使用异常来编程逻辑吗?我知道它在某种程度上是有效的,但是异常并不是为了控制正常的逻辑流。如果你传递一个非double,扫描器就会抛出异常。这是一种可能的方法,以摆脱循环有一个班轮。一种可能的方式,你可以找到一个你更喜欢的。至于控制正常流量的例外情况,在大多数情况下可能是正确的。一些编程语言采用另一种方法(例如Python及其迭代器)。我给了你一些有效的法律规范。不将数字存储在数组中的想法是有益的