我在读取字符串时遇到问题,扫描仪读取了Integer和double,并且显示了输出,但未读取string。
我需要您的帮助。
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);
}
}
使用nextLine()
代替nextInt()
或nextDouble()
。检查Scanner is skipping nextLine() after using next() or nextFoo()?了解更多信息。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = Integer.parseInt(scan.nextLine());
double d = Double.parseDouble(scan.nextLine());
String s = scan.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
示例运行:
10
20
a
String: a
Double: 20.0
Int: 10
短吗?请勿致电nextLine
-它的操作方式令人困惑。
如果要读取字符串,请改用next()
。如果您希望整个行而不是一个字的价值,请将扫描仪更新为在“行模式”而不是“空间模式”下工作:
Scanner scan = new Scanner(System.in);
scan.useDelimiter("\r?\n");
// and now use as normal:
int i = scan.nextInt();
double d=scan.nextDouble();
String s=scan.next();
这使扫描仪最多扫描换行符,这有点令人费解;在Windows上,它们是\r\n
,但在其他OS上,它们只是\n
,因此为什么我们指定:可选\r
,然后是必需的\n
。