查了一下 next nextLine连用 说是next只读取了 换行符 的前面的内容但是没有读取换行符 当你调用nextLine的时候他会去读取当前行由于next丢下了个换行符 刚好nextLine是以换行符作标志 读取它前面的内容 而前面的内容被next拿走了 现在没有值了所以为空 也不会去等控制台输东西 我想其他的next*累死next方法 解决方法,添加:
while((name=scan.nextLine()).equals("")){
}
追问:这个原因应该是nextLine先去读取缓存中的东西导致这个问题,但是我去看源码时 nextLine中会去调用clearCaches();这个方法不是清他的缓存吗?既然清了为什么还能读取到?
while((name=scan.nextLine()).equals("")){
}
追问:这个原因应该是nextLine先去读取缓存中的东西导致这个问题,但是我去看源码时 nextLine中会去调用clearCaches();这个方法不是清他的缓存吗?既然清了为什么还能读取到?
public static void main(String[] agrs) {
Scanner scan = new Scanner(System.in); System.out.println("输入年龄:");
int age = scan.nextInt(); System.out.println("输入身高:");
double stature = scan.nextDouble(); System.out.println("输入名字:");
String name = scan.nextLine();
name = scan.nextLine(); System.out.println("" + age + " " + stature + " " + name);
}
代码这样处理就没有问题了。
结合不同方法从键盘读取数据的时候,有时候不得不增加额外的nextline开销,以去掉换行符的影响