' P '

whatever I will forget

Java scanner.next() / nextLine() 違い

ある問題で、スペースごとにString値を区切ったほうがよいのか?
なんて考えて、str.split(" ");としていたのですが、Scanner inputからの値に対してそんなことは全くしなくていいことを学んだ。

Scanner.next()

空白までを文字列として扱う

Scanner.nextLine()

改行までを文字列として扱う

そのため、例えばinputから"This is a pen."と入力され、単語ごとにStringを区切りたいのであれば、
split()なんて使う必要はなく、ただ単にnext()を使えばいいということですね。そうすることで、This is a pen.とString変数にセットできることとなります。
空白を含んだThis is a pen.までを取得したい場合、nextLine()です。

参考

qiita.com

追記 7/6

入力が数値と文字列に交わるような場合のときは少し注意が必要.
例えば、下記のような入力のとき.

2 3 2
..#
###

1行目はintで取りたいとして、2行目以降はStringで取りたいなら、 sc.nextInt()をした後にsc.nextLine()を行なって改行を取得したあと、String値を取得するようにsc.nextLine()をするか、
もしくはsc.nextInt()後にsc.next()をすれば問題ない。