Scanern中的nextLine()和next()

本文探讨了Java中Scanner类的next与nextLine方法的区别与使用技巧,特别是如何避免因Enter键引发的问题,并提供了正确的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       用Java写获取用户输入的信息时,我们一般会用到扫描器Scanner,而实现字符串的输入有两种方式,next()和nextline()。而在使用nextline()注意不能直接用在next()方法的后面,我们来看看下面的代码

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()。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值