String name1, name2;
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一人的名字:");
name1 = sc.nextLine();
System.out.print("请输入第二人名字:");
name2 = sc.next();
System.out.println("输入的字符串是:" + name1 + " " + name2);
我们输入:第一个名字:诸葛亮。第二个名字:周瑜。
打印的结果:输入的字符串:诸葛亮 周瑜
而当我们把nextline()写在下面后
String name1, name2;
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个名字:");
name1 = sc.next();
System.out.print("请输入第二个名字:");
name2 = sc.nextLine();
System.out.println("输入的字符串是:" + name1 + " " + name2);
我们输入:第一个名字:诸葛亮。第二个名字:周瑜。
打印的结果:输入的字符串:诸葛亮
为什么会出现这个结果呢?
是因为nextLine()自动读取了被next()去掉的Enter作为他的结算符,所以没办法给
name2赋值,而这是name2里面是空值
而且其他的next方法也是不能放在nextline()前面的,如nextDouble() , float nextFloat() , int nextInt() ,nextline(),解禁额这个问题的方法是在每一个next
方法后面都加一个nextline(),目的是去掉Enter符。
String name1,name2;
Scanner sc=new Scanner(System.in);
System.out.print("请输入第一个名字:");
name1=sc.next();
sc.nextLine();
System.out.print("请输入第二个名字:");
name2=sc.nextLine();
System.out.println("输入的字符串是:"+name1+" "+name2);
我们输入:第一个名字:诸葛亮。第二个名字:周瑜。
打印的结果:输入的字符串:诸葛亮 周瑜
所以一般情况下推荐使用next()。