我正在尝试使用以下代码解决SPOJ上的Prime Generator问题
import java.lang.*;
import java.io.*;
class Prime
{
public static void main (String[] args) throws IOException
{
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader nx = new BufferedReader(reader);
int t; //t is the number of test cases
int n1;
int n2;// n1 and n2 and the smaller and larger number b/w which we have to find all the primes
System.out.println("Enter the number of test cases");
t = Integer.parseInt(nx.readLine());
if(t<=0)
{
return;
}
int i = 0;
do
{
System.out.println("Enter the first number");
n1 = Integer.parseInt(nx.readLine().trim());
if(n1<0)
{
return;
}
if(n1<0)
{
return;
}
System.out.println("Enter the second number");
n2 = Integer.parseInt(nx.readLine().trim());
if(n2<0)
{
return;
}
int a;
int b;
for(a = n1; a <= n2; a++)
{
for(b = 2; b < a; b++)
{
int quot = a%b;
if(quot == 0){
break;
}
}
if(a == b)
{
System.out.println(" "+a);
}
}
System.out.println();
i++;
}while(i < t);
}
}
我为缩进性差的代码以及类声明似乎已经泄漏到添加代码的区域表示歉意,但我已经四年没有写Java了。自昨天晚上以来,我一直在解决此问题,即使它在IntelliJ中也能正常工作,我也无法在SPOJ中使用它
code running as it should in IntelliJ
但是当我在SPOJ中运行相同的代码时,我得到了
SPOJ output
我在错误消息中搜索了Google,并尝试使用try catch解决问题而未成功。建议一些发生类似错误的人在parseInt()中使用trim()函数删除空格,但这并不能解决我的问题。
最佳答案
在第18行中,您尝试将null
字符串转换为数字。字符串为null
,因为没有可用的输入。从readLine()
的文档中:
返回:包含行内容的String,不包含任何行终止字符;如果已到达流的末尾,则返回null
另请注意屏幕截图中的“标准输入为空”。
总结一下:程序没有什么问题,您只是不提供任何输入数据。