2012-06-13 47 views
0

我目前正在嘗試從球體在線裁判(http://www.spoj.pl/problems/PRIME1/)解決Prime Generator問題。BufferedReader正在等待用戶提示讀取下一行

它的核心問題已經解決了,我面臨的問題是在閱讀輸入時,它讀得很好,前兩行並閱讀第三行我必須按回車,這個小東西給我解決方案評估超時。我想知道是否有某種方式可以讀取整個輸入,而不需要我按下輸入。

這裏的

輸入的輸入和輸出:

2 
1 10 
3 5 

輸出:

2 
3 
5 
7 

3 
5 

,這裏是我的代碼

class Solucion_Prime_Generator { 

    public static void main(String[] args) throws NumberFormatException, 
      IOException { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
     int t = Integer.parseInt(reader.readLine()); 
     for(int i=0;i<t;i++) 
     { 
      String numbers = reader.readLine();    
      System.out.println(numbers); 
      String[] numberArray = numbers.split(" "); 
      for (int j = Integer.parseInt(numberArray[0]); j <= Integer.parseInt(numberArray[1]); j++) 
      { 
       if(isPrime(j)){ 

        System.out.println(j); 
       } 
      } 
      System.out.println(" "); 
     } 
    } 

    public static boolean isPrime(int n) 
    { 

     if(n==1) 
     { 
      System.out.println(); 
      return false; 
     } 
     if(n==2) 
     { 
      return true; 
     } 
     if(n%2==0){ 
      return false; 
     } 
      for (int i = 3; i*i <= n; i+=2) 
      { 

      if(n%i==0) 
      {    
       return false; 
      } 

     } 

     return true; 
    } 

} 
+0

正如答案所示,目前尚不清楚你的問題到底是什麼。 –

+0

我花時間運行你的代碼,它似乎沒關係。你在找什麼確切的行爲? –

回答

0

它不是一條線,直到你按下輸入。它如何知道你已經完成了輸入行?

+0

看起來像我的解決方案是正確的,但它在時間上沒有效果,我認爲生病必須使用Eratosthenes篩來解決這個問題。我很抱歉浪費你的時間。 – oskar132

0

我相信,在你的文件的最後一行出現的問題,不是嗎?在這種情況下,最後一行是第三行。可能它是你文件中的最後一行,沒有回車/換行符。

正如tjg84指出的那樣,readLine()需要以回車符或換行符或兩者結束的行。因此,您有兩種可能的解決方案: - 在最後一行的末尾插入回車符/換行符。 - 使用另一種方法讀取該行。也許你可以使用掃描儀類method nextLine();

+0

似乎我的解決方案是正確的,但它在時間上沒有效果,我認爲生病必須使用Eratosthenes篩來解決這個問題。我很抱歉浪費你的時間。 – oskar132

相關問題