为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能在 java 中调用 nextLine() 方法两次?

为什么我不能在 java 中调用 nextLine() 方法两次?

料青山看我应如是 2021-09-12 16:12:08
在使用 Java 的 nextInt() 方法时,我遇到了以下代码:Scanner scan = new Scanner(System.in);int count = scan.nextInt();String string1 = scan.nextLine();我知道 string1 将包含一个空字符串。我的问题是为什么像下面这样调用 nextLine 方法两次会出错:String string1 = scan.nextLine().nextLine();
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这里:

String string1 = scan.nextLine().nextLine();

让我们分解一下:

String string1 = scan.nextLine()

调用nextLine()扫描仪。它返回一个String

因此,您的代码归结为

String string1 = someOtherString.nextLine();

当然,这是行不通的。因为 String 类不知道下一行,因此没有这样的方法!

记住:扫描器返回一个字符串,这是两个非常不同的对象。

如果你从盒子里拿出一个鸡蛋,你为什么会期望你可以从你得到的那个鸡蛋中取出另一个鸡蛋?!您可以从同一个盒子中取出两个鸡蛋,但不能从一个鸡蛋中取出一个鸡蛋。

最后:是的,有“流畅”API 的想法,它允许以“这种”方式链接方法调用。但是,可以只对被明确设计正是出于这个情况下工作。


查看完整回答
反对 回复 2021-09-12
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

scannerObj.nextInt() 不读取以下换行符,因此第一个 nextLine(返回当前行的其余部分) will always return an empty string.


这应该有效:


int count = readInput.nextInt();

readInput.nextLine();


String input=readInput.nextLine();


查看完整回答
反对 回复 2021-09-12
  • 3 回答
  • 0 关注
  • 218 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信