[英]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.