0

我目前正在尝试从 sphere 在线法官(http://www.spoj.pl/problems/PRIME1/)解决 Prime Generator 问题。

核心问题已经解决了,我面临的问题是在读取输入时,前两行读得很好,读到第三行我必须按回车,这个小东西让我超时解决方案的评估。我想知道是否有某种方式,因此它可以读取整个输入,而无需我按 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;
    }

}
4

3 回答 3

0

It's not a line until you press enter. How does it know you are done typing the line?

于 2012-06-13T17:35:00.007 回答
0

It's a bit hard to tell exactly what you're trying to accomplish but the readLine() method must be terminated by a carriage return or linefeed or both.

See this:

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

于 2012-06-13T17:35:31.420 回答
0

我相信问题出现在文件的最后一行,不是吗?在这种情况下,最后一行是第三行。可能是文件中的最后一行,没有回车/换行。

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

于 2012-06-13T17:40:29.757 回答