Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中写入文件时出现空指针异常_Java_File Io_Filewriter - Fatal编程技术网

在java中写入文件时出现空指针异常

在java中写入文件时出现空指针异常,java,file-io,filewriter,Java,File Io,Filewriter,我在写入文件时遇到异常。我给出下面的代码 private static void readCsvFromFileAmazon(List<String> filelist) throws BiffException, IOException,NullPointerException { FileWriter fw = new FileWriter("total_number_of_products_amazon.txt", true); String

我在写入文件时遇到异常。我给出下面的代码

private static void readCsvFromFileAmazon(List<String> filelist) 
        throws BiffException, IOException,NullPointerException {

    FileWriter fw = new FileWriter("total_number_of_products_amazon.txt", true);
    String numberOfProducts = getProductNumber(url);

    System.out.println(category);
    System.out.println("@@@@@@@@@@@@@@" + numberOfProducts);
    // call function to get the number of products. \
    if (!numberOfProducts.equals(null) || !numberOfProducts.equals(" "))
    {
        fw.write(numberOfProducts);
    }
    else
    {
        System.out.println("cant write null product");
    }
    fw.close();
}
此行中发生异常

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
您无法检查null.equalsnull是否为空-它会抛出一个异常NullPointerException,用于绑定访问null的equals方法。首先,使用==运算符确保numberOfProducts本身不为null:

if (numberOfProducts == null) { 
   //do something
} else {
 ...
}
还要注意的是

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
这在逻辑上毫无意义。假设null.equalsnull可以工作,但它不能工作,则右第二个操作数-!numberOfProducts.equals将仅在numberOfProducts==null时求值,因此无论何时求值正确的操作数,它都将生成false

这意味着您的病情可以缩短为:

if (numberOfProducts != null) 

您必须以不同的方式检查numberOfProducts内容:

ifnull!=产品数量| |!。等积数

而不是如果!numberOfProducts.equalsnull | |!numberOfProducts.equals

因为若numberOfProducts为null,那个么在null对象上调用方法equals会抛出一个nullPointerException

希望这对您有所帮助,

正如您发布的:

System.out.println("@@@@@@@@@@@@@@"+numberOfProducts);
输出为:

@@@@@@@@@@@@@@null
这意味着numberOfProducts为空,因此,如果您尝试对其调用任何非静态方法,如下所示:

numberOfProducts.equals(null)
将抛出NullPointerException。如果你想检查它是否为空,就这样做

if (numberOfProducts != null && !numberOfProducts.equals(" ")) {
    fw.write(numberOfProducts);
}
我想这会管用的

if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
 //doSomething
}else{
 //doSomethingElse
}
在if语句numberOfProducts.equalsnull中

您正在将字符串与空字符串进行比较。这没有任何效果,因为您正在比较空对象


请记住,字符串是一个对象,您需要以这种方式检查对象是否为null numberOfProducts==null或numberOfProducts!=null

在地球上的什么地方,你使用等式将字符串与null进行比较你的getProductNumberurl是否返回了什么?正如错误中提到的:numberOfProducts在这里从GetProductNumber返回为null我发现了这个。等于在internet的某个地方签入并尝试..OK现在我解决了异常谢谢它有不同的这可能是OP真正想要的逻辑是的,我也同意这一点。
if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
 //doSomething
}else{
 //doSomethingElse
}