簡體   English   中英

BufferedReader等待用戶promt讀取下一行

[英]BufferedReader awaits for an user promt to read next line

我目前正在嘗試通過Sphere在線裁判( http://www.spoj.pl/problems/PRIME1/ )解決Prime Generator問題。

核心問題已經解決,我面臨的問題是讀取輸入時,它讀取前兩行以及讀取第三行(我必須按Enter鍵),這有點讓我超時了解決方案的評估。 我想知道是否存在某種方式,因此它不需要我按Enter即可讀取整個輸入。

這是輸入和輸出

輸入:

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;
    }

}

在您按Enter鍵之前,這不是一行。 它怎么知道您已經完成了輸入行?

確切說明您要完成的任務有點困難,但是readLine()方法必須以回車符或換行符或兩者同時終止。

看到這個:

http://docs.oracle.com/javase/1.3/docs/api/java/io/BufferedReader.html#readLine ()

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

正如tjg84指出的那樣,readLine()期望行以回車符或換行符或兩者結尾。 因此,您有兩種可能的解決方案:-在最后一行的末尾插入回車符/換行符。 -使用另一種方法讀取該行。 也許您可以使用Scanner類方法nextLine()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM