提问者:小点点

扫描仪nextLine Java错误


我想要一个java程序来接受

1.整数

2.双

3.字符串分别。并显示上述内容。

但是我面临的问题是在我输入整数和双倍之后,它不会提示我输入字符串。它直接显示值。当我搜索到这个的索恩时,我才知道

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个答案

匿名用户

根据< code>nextLine() javadoc:

使此扫描仪前进过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

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

使用< code>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);