ScannerのhasNextメソッドの使い方
競プロの問題で入力を受け取る際には、最初に入力の総数を表す n が与えられ、その後にn個の入力が続けて与えられる、というパターンが多いです。この場合は、以下のように書くことで入力を受け取ることができます。
int n = sc.nextInt(); for (int i=0; i<n; i++) { //入力を受け取る }
ところで、AIZU ONLINE JUDGE の問題には、最初に n が与えられず、いきなりn個の入力が与えられるものがありました。この場合は、入力が全部で何個あるのかわからないので、for文で回数指定して受け取ることができません。そんなときに使うのが、Scanner のhasNextメソッドです。
while (sc.hasNext()) { //入力を受け取る }
このように書くことで、与えられた入力がなくなるまで、すなわちn個の入力が与えられた場合にはn回だけwhileループを回すことができます。
AtCoder や yukicoder では、どうやら常に入力の総数 n が最初に与えられるみたいなので、この書き方をする必要はないかと思いますが、テクニックの一つとして覚えておきたいです。