尝试先扫描整数然后再扫描字符串

时间:2019-07-02 22:38:58

标签: java

我正在编写代码以读取整数值,可能是浮点数,双精度数,然后最终读取字符串。发生的情况是我输入了int,然后按Enter键,此后应该停止执行,直到输入字符串为止。但是,一旦按Enter进入换行符,我就会得到输出,该输出只是数字,因为执行不会暂停我输入字符串。发生了什么事

尝试输入数字然后输入字符串,此方法有效。尝试输入数字,然后输入数字,该方法有效,尝试输入多个字符串,该方法有效,但我无法让程序先读取数字,然后读取字符串。

package test;
import java.util.Scanner;
public class Trying {


        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int i = scan.nextInt();
            double d=scan.nextDouble();
            String s=scan.nextLine();
            scan.close();

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

我没有得到字符串的输出

2 个答案:

答案 0 :(得分:1)

您的问题是一起使用Scanner.nextLine()Scanner.nextDouble() / Scanner.nextInt()。将它们一起使用时应小心,因为它们可能导致意外的行为。您可以阅读Scanner类的JavaDocs以获得更多详细信息。尝试使用int i = scanner.nextInt(); double d = scanner.nextDouble()而不是double d = Double.parseDouble(scanner.nextLine())来读取字符串并将其转换为双精度。

答案 1 :(得分:1)

在接受字符串输入之前,您需要清除扫描仪中的缓冲区,因此只需写

scan.nextLine();

之前

String s=scan.nextLine();

它将起作用