【发布时间】:2018-04-24 19:49:01
【问题描述】:
我正在解决 Hackerrank 上的一个问题,我必须输入一个整数、一个双精度和一个字符串并使用标准输出打印结果。
输入
42
3.1415
Welcome to HackerRank's Java tutorials!
输出
String: Welcome to HackerRank's Java tutorials!
Double: 3.1415
Int: 42
我编写了以下代码,但无法通过我的测试用例:
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String ss = s.nextLine();
int i = s.nextInt();
double d = s.nextDouble();
System.out.println("String: "+ss);
System.out.println("Double: "+d);
System.out.println("Int: "+i);
}
}
代码有什么问题吗? 该问题还指出:-
注意:如果您在 nextInt() 方法之后立即使用 nextLine() 方法,请记住 nextInt() 读取整数标记;因此,该行整数输入的最后一个换行符仍在输入缓冲区中排队,下一个 nextLine() 将读取整数行的剩余部分(为空)。
以下是我的输出:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Solution.main(Solution.java:8)
谁能解释一下?
【问题讨论】: