BufferedReader等待用户提示读取下一行

时间:2012-06-13 17:22:49

标签: java input bufferedreader

我目前正试图通过球体在线判断(http://www.spoj.pl/problems/PRIME1/)来解决Prime Generator问题。

它已经解决的核心问题,我面临的问题是在阅读输入时,它读好了前2行并且读了第3行我必须按回车,这个小东西给了我一个评估解决方案时超时。我想知道是否有某种方式,所以它读取整个输入,而不需要我按回车。

这是输入和输出

输入:

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

}

3 个答案:

答案 0 :(得分:0)

在按Enter键之前,这不是一行。怎么知道你输入了这行?

答案 1 :(得分:0)

要确切地告诉您要完成的内容有点难,但readLine()方法必须通过回车符或换行符或两者来终止。

见:

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

答案 2 :(得分:0)

我认为问题发生在你文件的最后一行,不是吗?在这种情况下,最后一行是第三行。可能是你文件中的最后一行,没有回车/换行。

正如tjg84指出的那样,readLine()要求行以回车或换行或两者结束。因此,您有两种可能的解决方案: - 在最后一行的末尾插入回车符/换行符。 - 使用另一种方法来读取该行。也许你可以使用Scanner类method nextLine();