Java学习笔记(三)——关于Scanner类在读取字符是跳过的问题

昨天在写Java作业的时候,遇到了这样一个问题,先贴上源码。
<span style="white-space:pre">		</span>System.out.print("input numbers of the company :");	
		Numbers=scanner.nextInt();
		Company company;
		company=new Company(Numbers);
		company.input();
		ObjectOutputStream file=new ObjectOutputStream(new FileOutputStream(new File("Company.txt")));
		file.writeObject(company);
		file.close();
		
		ObjectInputStream out=new ObjectInputStream(new FileInputStream(new File("Company.txt")));	
		company=(Company)(out.readObject());
        
	<span style="color:#ff0000;">	System.out.print("input name:");
	    <span style="white-space:pre">	</span>name=scanner.nextLine();
		company.output(name,"numbers");
		
		System.out.print("input numbers:");
		numbers=scanner.nextLine();
		company.output(numbers,"numbers");

</span>

中间加红的代码段看上去并没有什么问题,但是在输入的时候却直接跳过了input name: ,这就让我感到很奇怪了,起初我以为是自己对象序列化方面有些错误所导致的问题,但是检查了半天也没发现问题,后来我想起了以前在C语言读取字符时遇到的一个类似问题,根本原因就是看不到的回车字符被nextline()读取了,最上面的那行代码刚好在录入Numbers时输入了回车符,在我们不知道的情况下读取了,所以导致接下来的name字符无法录入,跳过一行,但下面的numbers却能正常读写

解决这个问题,只需要在input name 上面一行加入如下代码即可:

  scanner.nextLine();//吸收上个输入最后的回车字符


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值