java入力has Next()とhas Nextline()メソッドの違い
2781 ワード
最近勉強していますが、牛客ネットの上でアルゴリズムの練習問題をやっています。いくつかの状況で書いた に戻ります。 に戻る。
例えば、現在は次のようなテスト用の例があります。 に戻ります。 提案:例えば、前の の後に 参考資料:
ojのjava入力has Nextとhas NextLineはovのjava入力has Nextとhas Next Lineを区別します。
Java
コードは本機の運行時に正常な結果です。検査の結果、最終的に試験用例を読み取る位置に位置決めしました。Scanner scanner = new Scanner(System.in);
// hasNextLine
//
while(scanner.hasNextLine()){
// TODO:implement code
}
// hasNextLine hasNext()
//
while(scanner.hasNext()){
// TODO:implement code
}
オンラインで検索することで、この2つの方法の違いが得られます。入力ストリームをチェックする場合:hasNext()
方法は、次の非空文字があるかどうかを判断します。ある場合はtrue
に戻ります。そうでなければfalse
hasNextLine()
方法は、行マッチングモードに基づいて、次の行(空白行を含む)があるかどうかを判断し、ある場合はtrue
に戻り、さもなければfalse
例えば、現在は次のようなテスト用の例があります。
7 15 9 5
このテストケースは牛客ネット上にファイルとして保存されていますが、linuxシステムではファイルの最後に改行符
があります。つまりSystem.in
から入力されたストリームの中で本当に読み取られたデータストリームはこのようになります。7 15 9 5
プログラムは、5を処理した後、入力ストリームに1つの改行符
だけが残っています。5を処理した後、whileはループ判定を行います。このとき、hasNext()
方法とhasNextLine()
方法で判断した結果に違いが生じます。hasNext()
方法は、後で非空の文字がないと、false
hasNextLine()
方法では、改行
は空行であり、行のマッチングモードに該当するとtrue
に戻りますが、実際にはその後、データがないため、入力ストリームを読み取る際に異常が発生し、運行エラーが発生します。hasNextXxxx()
を採用するなら、後もnextXxxx()
を使用します。hasNextLine()
を使用すると、後の入力はnextLine()
で処理されます。nextInt()
の方法を使うと、前にhasNext()
の方法を使って判断します。ojのjava入力has Nextとhas NextLineはovのjava入力has Nextとhas Next Lineを区別します。