我正在编写代码以读取整数值,可能是浮点数,双精度数,然后最终读取字符串。发生的情况是我输入了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);
}
}
我没有得到字符串的输出
答案 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();
它将起作用