Java循环用nextLine()输入少一行

今天刷C语言网题号1094题的时候,遇到个奇怪的事情。题目要求是先输入一个n,然后接下来要输入n行字符串。
按理来说很简单,就nextInt()获取n后,用循环输入nextLine()就可以了,但奇怪的是for循环如果条件写成(int i=0;i<n;++i)后,会少一行。并且最后一个还没输入默认就是null了。
网上查了查,知道了是因为前面用过了类似nextInt()这样的函数。两种函数消息处理机制不同,当nextInt()读取到回车符或者换行的时候,就会停止且拿走前面的数据,但同时也会留下来一个回车符或者换行。而nextLine()读取到换行就会结束,所以相当于还没开始就结束了。。。
解决方案应该有很多,都用nextLine()然后把第一个转换成int感觉比较方便;或者也可以用完nextInt()之后再单独写一个nextLine()。

然后这道题还有一个地方就是,最后要按照空格来分字符串,听起来也很简单,用split就行,不过看了题解大佬的答案后,发现用split("\s+")更对,split(" ")不能判断多个空格连续的情况。
让我想起来之前写c#遇到过这种情况,当时用的是c#的split的StringSplitOptions.RemoveEmptyEntries重载函数。

害~不得不说路漫漫其修远兮啊

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值