2013-10-10 51 views
0

我在Java新m.How解決以下error.On result.append(行)它拋出空指針異常。 下面是代碼空指針異常錯誤當附加字符串值

public class test { 
    private static StringBuffer result = null; 

    public static void main(String[] args) {   
     printCSV(); 
    } 
    private static void generateCsvFile(String sFileName,StringBuffer result) 
     { 
     try 
     { 
      FileWriter writer = new FileWriter(sFileName);  
      writer.append(result.toString());   
      writer.flush(); 
      writer.close();  
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
     } 
    public static void printCSV() { 
     try { 
      URL url = new URL(protocol + "://" + hostname + "/apiv2/csv.xml?username=" + userName + "&password=" 
        + password + "&form_id=" + formId + "&begin_second=962461752&end_second=1593613752"); 
      HttpURLConnection urlCon = (HttpURLConnection) url.openConnection(); 
      System.out.println(urlCon); 
      urlCon.connect(); // Connecting 
      BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream())); 
      String line = null; 

      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
       result.append(line); 
      } 
      generateCsvFile("d:\\test.csv",result); 
      System.out.println(result); 
     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
    } 
} 
+1

我認爲你的「結果」對象仍然是空的,你是在哪裏實例化的? – hallie

+0

他沒有實例化它。如果他實例化它,它應該永遠不會拋出一個空指針異常,當它使用append()函數 –

回答

3

您還沒有初始化StringBuffer result領域。更改

private static StringBuffer result = null; 

private static StringBuffer result = new StringBuffer(); 

更重要的是,使用StringBuilder

+0

嗨,非常感謝它的工作。在這裏我試圖創建CSV文件。但在生成的文件中,所有記錄都顯示在一行中。如何把新的記錄放在新的線上? – kreya

0

您並未將result初始化爲StringBuffer的實例。它從一開始就是null。嘗試這樣做:

public static void main(String[] args) { 
    result = new StringBuffer(); 
    printCSV(); 
} 
1

您的「結果」對象仍爲空。您可以像這樣全局實例化字符串緩衝區。

private static StringBuffer result = new StringBuffer(); 
0

您還沒有初始化結果。當調用result.append()時,它爲空。

使用它像之前,您應該初始化的StringBuffer的新對象 -

result = new StringBuffer(); 
0

,因爲你正在使用的設置爲null

private static StringBuffer result = null; 

變量拋出空指針異常append()函數屬於StringBuffer,因此您需要初始化result以及StringBuffer的新實例,然後才能在中使用它。

0

您沒有初始化名爲「result」的變量。您需要這條線:

result = new StringBuffer(); 

ALO小心你的這部分代碼:

FileWriter writer = new FileWriter(sFileName);  
writer.append(result.toString()); 

writer.append();writer.print()不同,我認爲這是你需要writer.print();