【发布时间】:2021-06-02 13:00:12
【问题描述】:
示例输入:
9.1 9.0 8.9 8.8 9.4 7.9 8.6 9.8
这是我获取输入的代码。
在不知道输入数量的情况下,我不知道如何获得这种类型的输入。
import java.io.*;
import java.util.*;
/**
* Diving_Competition
*/
public class Diving_Competition {
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
ArrayList<Float> lst = new ArrayList<Float>();
while (in.hasNextFloat()) {
lst.add(in.nextFloat());
}
System.out.print(lst);
in.close();
}
}
这个循环无限运行。如何在不知道其大小的情况下在一行中获取输入?
我是python背景的
【问题讨论】:
-
此循环不会“运行无限时间”。它会在
hasNextFloat()返回 false 时立即停止,如果不是在其他内容出现之前,它肯定会在输入结束时执行此操作。这里没有问题要解决。 -
线程“主”java.lang.NumberFormatException 中的异常:java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) 处 java.base/jdk 处的空字符串。 internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122) 在 java.base/java.lang.Float.parseFloat(Float.java:461) 在 Diving_Competition.main(Diving_Competition.java:15)
-
这更能证明循环不会无限期地运行。如果那是你真正的问题,你应该问它。但是这段代码没有调用
parseFloat(),也没有抛出这个异常。
标签: java arrays input java.util.scanner