2014-09-04 12 views
0

파일에 쓰는 동안 예외가 발생합니다. 아래 코드를 제공합니다. , 예외를 throw NullPointerException이 -자바에서 파일을 쓸 때 null 포인터 예외가 발생했습니다.

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.equals(null)이 경우

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" ")) 
+0

의이 종류에 null을 경우 땅에 당신이 '등호를 사용하여 널 (null)()로 문자열을 비교하는 경우 개체를 확인해야' –

+0

당신을합니까' getProductNumber (url)'반환 무엇입니까? – spoko

+0

잘 언급 된 오류 : numberOfProducts는 getProductNumber()에서 null로 반환됩니다. – holmes840

답변

1

당신은 확인할 수 없습니다이 라인에서 어떤 일이 일어나고

Exception in thread "main" 
@@@@@@@@@@@@@@null 
java.lang.NullPointerException 

예외를 발생 널 (null) 다음 예외는 nullequals() 메서드에 액세스하려는 경우. 첫째, == 연산자를 사용하여, 확인 numberOfProducts 자체 null 있지 않은지 확인 :

if (numberOfProducts == null) { 
    //do something 
} else { 
... 
} 

또한 라인

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" ")) 

논리적으로 이해되지 않는다 있습니다. null.equals(null)이 작동한다고 가정하면 두 번째 (오른쪽) 피연산자 인 !numberOfProducts.equals(" ")numberOfProducts == null 인 경우에만 평가되므로 올바른 피연산자가 계산 될 때마다 항상 false이됩니다. numberOfProducts 경우 때문에

if(null != numberOfProducts ||!"".equals(numberOfProducts))

대신 if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))

:

if (numberOfProducts != null) 
3

당신은 다른 방법으로 numberOfProducts 내용을 확인해야합니다

이것은 당신의 상태는 단순히 단축 할 수 있음을 의미 null을 입력 한 다음메서드를 호출합니다. null에있는개체는 nullPointerException을 던집니다. 당신이 게시 된

1

이 도움이

희망 :

System.out.println("@@@@@@@@@@@@@@"+numberOfProducts); 

출력은 다음과 같습니다

@@@@@@@@@@@@@@null 

이것은 당신이 아닌 정적 메소드를 호출하려고하면 numberOfProducts는 따라서 null 의미 이걸 좋아해요 :

numberOfProducts.equals(null) 

NullPointerException입니다.당신이 null을 있는지 확인하려면이에

if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){ 
//doSomething 
}else{ 
//doSomethingElse 
} 
1

처럼 그것을 당신의 if 문 numberOfProducts.equals(null)

당신이 null 문자열로 문자열을 비교하는 . 당신이 null 객체를 비교하고 있기 때문에 이것은 효과가 없습니다.

문자열 객체임을 기억하고 당신이 그들이 방법 numberOfProducts == null 또는 numberOfProducts != null

+0

다른 논리를 사용합니다. (OP가 실제로 의도했던 것일 수도 있었음) – amit

+0

네, 저도 동의합니다. –

2

작동합니다 내가 생각이

if (numberOfProducts != null && !numberOfProducts.equals(" ")) { 
    fw.write(numberOfProducts); 
} 
관련 문제