OJでjava入力hasNextとhasNextLineの違い

1548 ワード

ここでjavaで、hasNextLinehasNextの違いを具体的に説明します
まず具体的な結論を言います.has xxxxを採用する場合は、後からも使用するnext xxxx.例えば前に使用するhasNextLine、後に使用するnextLine入力を処理する.
----分割線----
二つの方法の違いを話してください.hasNext空白文字がないかチェックです.hasNextLine入力にまだあるかチェックlinePatternです.そのうちLinePattern実は正規表現にマッチしています.
    private static final String LINE_SEPARATOR_PATTERN =
                                           "\r
|[
\r\u2028\u2029\u0085]"
; private static final String LINE_PATTERN = ".*("+LINE_SEPARATOR_PATTERN+")|.+$";

問題判定システムのすべての試験例はファイルに格納され、上記の例では、試験例のファイルは次のとおりです.7 15 9 5
5を処理した後、空でない文字はないhasNextfalseに戻ったが、linuxシステムでは5後に改行符がある
0X0A(興味のある方は自分で作成してバイナリでファイルを見ることができます).
だからhasNextLine戻ってくるtrueでも実は後ろに読める要素がないので、下のin.nextInt異常を投げ出します.