我目前正试图通过球体在线判断(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;
}
}
答案 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();