扫描程序nextLine Java错误

时间:2016-08-24 14:57:04

标签: java java.util.scanner

我希望java中的程序接受

1.Integer

2.Double

3.String 分别 。 并显示以上内容。

但是我遇到的问题是在我输入整数和双重之后它没有提示我输入String。它直接显示值。 当我搜索到这个时,我知道了

scan.nextLine(); 
在接受双值后,应该使用

任何人都可以告诉我为什么要使用这一行。 我读了nextLine的文档。但我不明白。

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        double d = scan.nextDouble();
        //   scan.nextLine();            **Why should I write this ??**
        String s = scan.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

1 个答案:

答案 0 :(得分:2)

根据nextLine() javadoc:

  

使此扫描程序超过当前行并返回该输入   被跳过了。此方法返回当前行的其余部分,   排除末尾的任何行分隔符。该职位设定为   下一行的开头。

输入double值后,nextLine()读取包含双精度数的行的余数。这就是为什么你需要另一个nextLine()输入字符串。

使用next()可以解决您的问题:

Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
String s = scan.next();

System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);