读取整数和双读后如何读取整个字符串?

For*_*aki 0 java string

所以我有以下输入:

3
3.0
How are you doing
Run Code Online (Sandbox Code Playgroud)

我需要将它们存储到以下变量中:

int myInt
double myDouble
String myString
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

myInt = scan.nextInt();
myDouble = scan.nextDouble();
myString = scan.nextLine();
Run Code Online (Sandbox Code Playgroud)

这适用于整数和Double值,但String给了我一个NULL值.

然后我尝试了这个:

myInt = scan.nextInt();
myDouble = scan.nextDouble();
myString = scan.next();
Run Code Online (Sandbox Code Playgroud)

它再次适用于前两个,但字符串只保留第一个字.我怎样才能读完整个字符串?我需要设置循环吗?

Chr*_*ris 8

nextLine()有点令人困惑的名字.它没有给你下一行,但会读到它遇到的下一个换行符.

在调用nextDouble()之后,扫描程序位于新行之后3.0新行之前,因此nextLine()读取到该行的末尾并为您提供空结果.

您可以使用skip(String)以后跳过换行符3.0,或者只是调用nextLine()一次并扔掉它:

myInt = scan.nextInt();
myDouble = scan.nextDouble();
scan.nextLine(); // Skip the remainder of the double line
myString = scan.nextLine();
Run Code Online (Sandbox Code Playgroud)