Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误

Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误

public class demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入整数");
	    Scanner sc = new Scanner(System.in);
	    int i = sc.nextInt();
	    System.out.println("整数" + i);
	    System.out.println("请输入字符串");
	    String s = sc.nextLine();
	    System.out.println("字符串" + s);

换行符‘\n’和回车符‘\r‘
 
java中Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误,
那就是当next()或者nextInt(),nextDouble()  、 nextFloat()用在nextLine的前面时。
nextLine会把前者的结束符“换行符”作为字符串读入,进而不需要从键盘输入字符串nextLine已经转向下一条语句执行,
 
 nextInt(),当我们录入10时
 其实在键盘上录入的是10和\r\n,然后结束
 nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
 
 每次输入都需要给出回车,表示输入结束。
但回车也一个字符串。
先nextInt(),获取一个整数,再nextLine()获取一行字符串。
因为nextInt()时,输入结束时会输入一个回车符,这个回车符会被nextLine()获取,所以会出问题。

解决
1让两个输入使用不同的Scanner对象
2都用nextline()方法



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值