//...
for (int i = 0; i < numbers; i++)
{
System.out.print("请输入第" + (i + 1) + "个学生的ID:");
int id = in.nextInt();
System.out.print("请输入第" + (i + 1) + "个学生的姓名:");
String name = in.nextLine();
System.out.print("请输入第" + (i + 1) + "个学生的年龄:");
int age = in.nextInt();
}
//...为什么只能输入ID,而中间的姓名却跳过了呢?求高手解答,感激不尽!

解决方案 »

  1.   


    for (int i = 0; i < numbers; i++)
            {
                System.out.print("请输入第" + (i + 1) + "个学生的ID:");
                int id = in.next(); // 不要用nextline()
                System.out.print("请输入第" + (i + 1) + "个学生的姓名:");
                String name = in.nextLine();
                System.out.print("请输入第" + (i + 1) + "个学生的年龄:");
                int age = in.nextInt();
            }
      

  2.   


    for (int i = 0; i < numbers; i++)
            {
                System.out.print("请输入第" + (i + 1) + "个学生的ID:");
                int id = in.nextInt(); 
                System.out.print("请输入第" + (i + 1) + "个学生的姓名:");
                String name = in.next();// 不要用nextline()
                System.out.print("请输入第" + (i + 1) + "个学生的年龄:");
                int age = in.nextInt();
            }
    刚才改错地方了!。。
      

  3.   

    +1public String next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。 
    public String nextLine()此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。 
    因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。看一下它们的区别你就明白了
      

  4.   

    public String nextLine()此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。 
    因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。