2012-05-21 106 views
0

我寫了一個非常簡短的程序,用於在線評判者(http://acm.sgu.ru/problem.php?contest=0 &問題= 184)的簡單編程競爭問題,但由於某種原因我在第21次測試中遇到了運行時錯誤(它沒有詳細說明運行時錯誤是什麼)。所以我重寫了代碼,它現在沒有給出運行時錯誤,但我不明白爲什麼這個代碼應該工作,而原來沒有。這裏是工作代碼:神祕的Java運行時錯誤

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在非工作代碼中掃描器和使用in.nextLine(),但沒」工作。然後我想,也許有一個由零開始的劃分,但問題條件排除它,這應該仍然是工作代碼中的一個問題,所以我不知道爲什麼第一個工作,但第二個沒有。

+1

你能告訴我們什麼21號測試? –

+0

不幸的是我不能。它給出的所有信息都是錯誤的類型。 – mgriisser

回答

0

當輸入被空格隔開而沒有任何換行符時,它會失敗。您在非工作代碼中或在等待輸入時得到一個NPE,那麼因爲您的程序被阻止,您將超過此測試0.5秒的時間限制。