Scanner scanner = new Scanner(System.in); System.out.println("请输入商品编号:"); String id = scanner.next(); System.out.println("请输入商品名称:"); String name = scanner.nextLine();
上面的代码,执行时会出现一个问题:输入第一个值商品编号后,还没输入第二个值商品名称就直接结束了,也就是只接收了第一个值。
怎么回事?如下
首先说下next()和nextLine()各自的特点:
在上述问题中,当输入第一个值后,按回车,next()只读取了有效字符,不包括回车。于是这个回车就留下了,而第二个值是以回车为结束符的,于是就直接读取了回车,所以第二个值没手动输入内容就直接结束了。
解决方法是:在第二个值nextLine()前再加一个nextLine()来接收第一个值留下的回车,保证下一个nextLine()接收的是正确的内容。
Scanner scanner = new Scanner(System.in); System.out.println("请输入商品编号:"); String id = scanner.next(); scanner.nextLine(); // 加上一个nextLine(),接收next()留下的回车 System.out.println("请输入商品名称:"); String name = scanner.nextLine();