我知道默认情况下,扫描程序会跳过空格和换行符。 我的代码有问题,因为我的扫描仪不会忽略“\ n”。
例如:输入是“这是\ na测试”。并且所需的输出应为“”这是一个测试。“
这是我到目前为止所做的:
Scanner scan = new Scanner(System.in);
String token = scan.nextLine();
String[] output = token.split("\\s+");
for (int i = 0; i < output.length; i++) {
if (hashmap.containsKey(output[i])) {
output[i] = hashmap.get(output[i]);
}
System.out.print(output[i]);
if (i != output.length - 1) {
System.out.print(" ");
}
答案 0 :(得分:0)
nextLine()
忽略指定的分隔符(可选地由useDelimiter()
设置),并读取到当前行的末尾。
由于输入是两行:
this is
a test.
仅返回第一行(this is
)。
然后您将其拆分为空格,因此output
将包含[this, is]
。
由于您再也不使用扫描仪,因此永远不会读取第二行(a test.
)。
从本质上讲,您的标题恰到好处: Java Scanner不会忽略新行(\ n)
它在您调用nextLine()
时专门处理了换行符。
答案 1 :(得分:0)
您不必使用Scanner
来执行此操作
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String result = in.lines().collect(Collectors.joining(" "));
或者,如果您真的想使用Scanner
,这也应该有效
Scanner scanner = new Scanner(System.in);
Spliterator<String> si = Spliterators.spliteratorUnknownSize(scanner, Spliterator.ORDERED);
String result = StreamSupport.stream(si, false).collect(Collectors.joining(" "));