sc.next() とsc.nextLine()の違い あと区切り文字の変更
いまいち理解してなかったので…
next()とnextLine()の違いは「空白も文字列として認識するか否か」で、next()の方は「空白までを1区切りとして認識」、nextLine()の方は「空白は文字列として認識」し、「改行までを1区切りとして認識」するという事。
例えば入力値が"Hello 10"だった場合、
next()では空白を区切りとするので「Hello」が代入されるが、nextLine()では改行までが区切りなので「Hello 10」まで全て代入される。
ところでAPIリファレンスを見ていたらuseDelimiterというメソッドがあったので調べたらデリミタ(区切り文字)を変更するものらしい。
文中では
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
と使用することによって「空白+fish+空白」を区切り文字に変更していた。
あまり使用する機会はないかとは思うがあれば便利そうなのでメモしておく。