我正在接受一项编码挑战,其中我要从
stdin
中取出一个整数、一个双精度数和一个字符串,并将此打印结果打印在 stdout
中。该字符串必须是一个字符串,其中必须包含多个由空格分隔的单数单词。
当我在
nextLine
行下方仅使用单个 nextDouble
方法输入代码时,它在挑战网站上工作,但在我的编辑器中不起作用。该网站和我的编辑器都使用 Java 8。我尝试在编辑器中切换不同的 Java 8 包,但没有什么区别。给什么?
通常,根据我的收集,您只需放置 one dummy
nextLine
即可解决 Java nextInt
方法不读取通过按“Enter”创建的换行符的问题。但在这种情况下,我必须这样做两次。
import java.util.*;
public class Solution {
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
// Write your code here.
scan.nextLine();
double d = scan.nextDouble();
scan.nextLine();
scan.nextLine(); //why do I have to include this line in order for spaces to print on my string in stdout?
String s = scan.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
nextDouble() 方法仅读取双精度值。然而,每当用户输入数字时,用户都会按 Enter 键。这个 Enter 键本质上是换行符(“ ") 并且被 nextDouble() 方法忽略,因为它不是 double。我们说 nextDouble() 方法不消耗换行符。
每当您在 nextDouble() 方法之后使用 nextLine() 方法时,您应该始终有一个额外的 nextLine() 方法来使用前一个换行符。