ある問題で、スペースごとに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()
です。
参考
追記 7/6
入力が数値と文字列に交わるような場合のときは少し注意が必要.
例えば、下記のような入力のとき.
2 3 2 ..# ###
1行目はintで取りたいとして、2行目以降はStringで取りたいなら、
sc.nextInt()
をした後にsc.nextLine()
を行なって改行を取得したあと、String値を取得するようにsc.nextLine()
をするか、
もしくはsc.nextInt()
後にsc.next()
をすれば問題ない。