扫描仪下一行Java错误

扫描仪下一行Java错误,java,java.util.scanner,Java,Java.util.scanner,我想要一个java程序来接受 1.整数 2.双人 3.字符串 分别地 并显示以上内容 但我面临的问题是,在输入整数并将其加倍后,不会提示我输入字符串。它直接显示值。 当我搜索soln的时候,我知道了这一点 scan.nextLine(); 应在我接受双精度值后使用 谁能告诉我为什么要用这条线吗。 我读了nextLine的文件。但是我不明白 import java.util.Scanner; public class Solution { public static void ma

我想要一个java程序来接受

1.整数

2.双人

3.字符串 分别地 并显示以上内容

但我面临的问题是,在输入整数并将其加倍后,不会提示我输入字符串。它直接显示值。 当我搜索soln的时候,我知道了这一点

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);
    }
}

根据
nextLine()
javadoc:

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

输入双精度值后,
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);

根据
nextLine()
javadoc:

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

输入双精度值后,
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);

因为它将新行字符作为输入字符串。只要问一下,当你插入一个双精度字符时,你的数字是多少?因为它将新行字符作为一个输入字符串,所以可能会重复。只要问一下,当你插入一个双精度字符时,你的数字是多少?可能会重复谢谢。我想在翻倍后,它只会转到下一行。谢谢。我想在翻倍之后,它就直接进入下一行了。