我在写文件时遇到异常。我正在给出以下代码。
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();
}
产品数量的值为null然后发生异常
Exception in thread "main"
@@@@@@@@@@@@@@null
java.lang.NullPointerException
此行中发生异常
if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
答案 0 :(得分:3)
您必须以不同方式检查numberOfProducts内容:
if(null != numberOfProducts ||!"".equals(numberOfProducts))
而不是if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
因为如果numberOfProducts
为null
,则在equals
对象上调用方法null
会抛出nullPointerException
。
希望这有帮助,
答案 1 :(得分:2)
numberOfProducts.equals(null)
中的
您正在将字符串与null
字符串进行比较。这不会产生任何影响,因为您正在比较一个空对象。
请记住String是一个对象,你需要以null
或numberOfProducts == null
numberOfProducts != null
答案 2 :(得分:1)
您无法检查是否null.equals(null)
- 它会引发异常NullPointerException,以便绑定以访问equals()
null
方法。首先,使用numberOfProducts
运算符确保null
本身不是==
:
if (numberOfProducts == null) {
//do something
} else {
...
}
还要注意该行
if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
逻辑上没有任何意义。假设null.equals(null)
可以工作(IT不会),第二个(右)操作数 - !numberOfProducts.equals(" ")
将仅在numberOfProducts == null
时进行评估,因此每当评估右操作数时 - 它将始终产生false
。
这意味着您的病情可以缩短为:
if (numberOfProducts != null)
答案 3 :(得分:1)
正如您发布的:
System.out.println("@@@@@@@@@@@@@@"+numberOfProducts);
输出是:
@@@@@@@@@@@@@@null
这意味着numberOfProducts
是null
,因此如果你试图像这样调用任何非静态方法:
numberOfProducts.equals(null)
将抛出NullPointerException
。如果您想检查它是否null
,请按照这样做
if (numberOfProducts != null && !numberOfProducts.equals(" ")) {
fw.write(numberOfProducts);
}
答案 4 :(得分:1)
我认为这会起作用
if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
//doSomething
}else{
//doSomethingElse
}