- ベストアンサー
Online judgeのデータ入力について
- Aizu Online Judgeの問題で、入力データの数が明らかでない場合の入力方法について教えてください。
- 使用言語はJavaで、通常はScannerクラスのnextInt()を使用して入力を行っていますが、最後のデータを読み込んだ後もまだ入力待ちの状態になってしまいます。
- 他の質問でも似たような問題があったようですが、それはJava以外の言語での解決方法でした。分かる方は教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Windowsのコマンドプロンプトなら、^Zを入力。 Mac/UNIXのターミナルからなら、^Dを入力。 あるいは0バイトのファイルをリダイレクト入力するでも可。
その他の回答 (2)
- osamuy
- ベストアンサー率42% (1231/2878)
Digit Numberの問題には、「The input terminates with EOF」って書いてあるので、例外NoSuchElementExceptionを補足すればよいかと。 そういう質問じゃなくて、「EOFって何?」ということなら、こんなのとか: http://www.google.co.jp/search?hl=ja&q=EOF%E3%81%A8%E3%81%AF+%5EZ+%5ED&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=
補足
何度もすみません。 EOFについては質問する前に調べていたのですが、それまでは知りませんでした(NoSuchについても) ソースコードが誤っているのかもしれませんが、 下記のテストプログラムを作って試しても、 何も数値を与えずにEnterを押しただけではプログラムが入力待ちのままになってしまいます。 import java.util.Scanner; import java.util.NoSuchElementException; class ExTest{ public static void main(String[] args){ Scanner scan=new Scanner(System.in); int i=0; try{ System.out.print("入力する数字:"); i=scan.nextInt(); System.out.println(i); }catch(NoSuchElementException e){ System.out.println("なにも入力されませんでした"+e); } } } このプログラムが、 なにも値を与えずにEnterのみを押して”なにも入力されませんでした"+NoSuchElementException” のように返ってきて終了するようになれば、おそらくこの問題も解けると思うのですが…。 どこかソースに指摘されるところがあればよろしくお願いします。
- covachan
- ベストアンサー率38% (46/120)
質問がわかりにくいのですが、 単純に、終了したければ負の数を投げてやれば終わりませんか?
補足
すみません。 条件では負の数がどちらか与えられたかというものにしているのですが、 実際には負の数が与えられることは無いと思います(あったとしたら例外となって止まる) なので正しいプログラムはwhileの中のどちらか負の数が与えられたらという条件は要らないとおもいます。止め方が分からないので今のところこのようになっているということです。 質問を訂正すると、この問題のように入力されるデータの行数が決まっていない場合 最後の行までデータを読み込んだ後に終了するプログラムを JavaのScannerクラスのnextInt等でどのように記述すればよいのかということです。
補足
コマンドプロンプトでは確かに[ctrl]+[z]で思ったとおりの結果が出ました。 また、コマンドプロンプト上では止められなかったのですが、 一つ前の回答でいただいたNoSuchElementExceptionと例外処理の導入によって ためしに提出してみたら 問題でacceptedをいただきました。 助けていただき本当にありがとうございました。 これからも頑張っていきたいとおもいます。