【发布时间】:2016-09-24 19:31:26
【问题描述】:
我一直在解决 HackerRank 问题,并尝试在向任何社区寻求帮助之前始终研究解决方案。虽然我设法让当前的代码正常工作,但我觉得涉及到一些不必要的代码,有人可以教我如何做得更好,因为我不想仅仅因为它有效就养成一个坏习惯。
在本课 HackRank 30 天的代码(第 2 天)中,我们被要求从标准输入读取 3 行(一个 Int、一个 Double 和一个 String)并使用扫描仪读取、保存和操作它们。
Scanner scan = new Scanner(System.in);
/* Declare second integer, double, and String variables. */
int myI = scan.nextInt();
double myDouble = scan.nextDouble();
scan.nextLine();
String myString = scan.nextLine();
扫描 Int 和 Double 很容易,但是当我尝试扫描 String 时遇到了一些问题:
A) 如果我使用了 scan.next();我得到了一个单词而不是完整的字符串。
B) 如果我使用了 scan.nextLine();我得到了一个空行。
经过一些研究,我发现有人建议,因为我刚刚做了一个 scan.nextDouble(); scan.nextLine();只是读取该行末尾的空白(这对我来说没有多大意义),如果我添加了一个额外的“scan.nextLine();”在声明我的字符串之前它应该可以工作。
果然做到了。我真的不明白为什么,当然感觉这不是解决这个问题的正确方法。如果我不得不经常这样做,似乎只会让代码膨胀?
谁能解释一下:
1) 为什么 scan.nextLine();在我添加一个额外的之前返回空白?
2) 有没有更好的方法从扫描中定位字符串?
【问题讨论】:
标签: java string java.util.scanner stdin