0

オンラインジャッジ(http://acm.sgu.ru/problem.php?contest=0&problem=184)で簡単なプログラミング競技問題の非常に短いプログラムを作成しましたが、何らかの理由で21日にランタイムエラーが発生しましたtest (実行時エラーが正確に何であるかは指定されていません)。そのため、コードを書き直したところ、実行時エラーは発生しなくなりましたが、元のコードでは機能しなかったのに、このコードが機能する理由がわかりません。作業コードは次のとおりです。

Scanner scan = new Scanner(System.in);
int[] arr1 = new int[3];
int[] arr2 = new int[3];
for (int i = 0; i <= 2; i++) arr1[i] = scan.nextInt();
for (int i = 0; i <= 2; i++) arr2[i] = scan.nextInt();
System.out.println(Math.min(arr1[0]/arr2[0], Math.min(arr1[1]/arr2[1], arr1[2]/arr2[2])));

非動作コードは次のとおりです。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] arr1 = in.readLine().split(" ");
String[] arr2 = in.readLine().split(" ");
int flour = Integer.parseInt(arr1[0])/Integer.parseInt(arr2[0]);
int milk = Integer.parseInt(arr1[1])/Integer.parseInt(arr2[1]);
int cabbage = Integer.parseInt(arr1[2])/Integer.parseInt(arr2[2]);
System.out.println(Math.min(cabbage, Math.min(flour, milk)));

最初に、非稼働コードで BufferedReader を Scanner に変更し、 in.nextLine() を使用しようとしましたが、うまくいきませんでした。次に、ゼロによる除算が行われている可能性があると考えましたが、問題の条件ではそれが不可能であり、それはまだ作業コードの問題であるはずです.

4

1 に答える 1

0

入力が改行なしでスペースだけで区切られていると失敗します。動作していないコードで NPE を取得するか、入力を待機しているときに、プログラムがブロックされるため、このテストの制限時間 0.5 秒を超えます。

于 2012-05-21T16:50:00.040 に答える