Java程序中的空指针异常

时间:2015-04-20 17:38:57

标签: java nullpointerexception

  

问题:您必须检查n个乘法的n个测试用例   和b等于或不等于第三个输入值。如果等于则输入YES   否则没有。        输入:2 5 6 30 4 3 20

     

输出:是否

     

说明:2是测试用例的数量。 5是& 6是b   乘法是30所以是

     

约束:

     

0<测试用例< = 1000000000 0< a< b< = 10000000

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Scanner;


class ques1 
{
    public static void main(String[] args) throws Exception
    {

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        Scanner sc=new Scanner(System.in);
        BigInteger test=new BigInteger(sc.next());

        while(!test.equals(BigInteger.ZERO))
        {
            Scanner s=new Scanner(br.readLine());
            s.useDelimiter(" ");
            BigInteger p=new BigInteger(s.next());
            BigInteger q=new BigInteger(s.next());
            BigInteger r=new BigInteger(s.next());
            if(p.multiply(q).equals(r))
            {
                System.out.println("YES");
            }
            else
            {
                System.out.println("NO");
            }
            test=test.subtract(BigInteger.ONE);
        }
    }
}

这个程序在eclipse中工作正常。但是在运行在像ideone.com等在线编译器上时,它会给出如下错误信息:

Exception in thread "main" java.lang.NullPointerException
    at java.io.StringReader.<init>(StringReader.java:50)
    at java.util.Scanner.<init>(Scanner.java:702)
    at ques1.main(Main.java:18)

约束是如此之大,所以我使用biginteger.I也使用stringtokenizer而不是输入分离的扫描程序,但它也给出相同的错误。 我必须以间距格式输入,所以我使用stringtokenizer或扫描仪。 是否还有其他方法可以将它们分开。

1 个答案:

答案 0 :(得分:1)

到达文件末尾时,

br.readLine()将返回null。并且new Scanner(String)不接受null作为参数。除此之外,如果您可以从资源中读取数据,则应始终检查有效输入。