2016-10-12 103 views
3

我有一個read()方法,裏面我想要分開字符串(它們之間有空格)並將它們放入一個二維數組中,但在此之前,我擺脫了所有空間。數組初始化後,它被賦予CSV構造函數,並創建它自己的2D數組。 問題是我總是收到以下錯誤:「csv = new CSV(sr)」中的變量sr可能未被初始化。 如何確保我的數組獲取有效的字符串?在java中輸入到兩個二維數組的CSV輸入

private String[][] tomb; 

private CSV(String[][] t2) { 
    tomb = new String[t2.length][]; 
    for(int i = 0; i < t2.length; i++) { 
     tomb[i] = new String[t2[i].length]; 
     for(int j = 0; j < t2[i].length; j++) { 
      tomb[i][j] = t2[i][j]; 
     } 
    } 
} 

public static CSV read(Scanner sc) { 

    String[][] sr;  
    int n = 0; 
    while (sc.hasNextLine()) 
    { 
     String line = sc.nextLine(); 
     String[] str = line.split(","); 
     sr = new String[str.length][]; 
     for (int i = 0; i < str.length; i++) { 
      sr[i][n].replaceAll("\\s+",""); 

     } 
     n++; 
    } 

    CSV csv = new CSV(sr); 
    return csv; 

} 

回答

1

您可以通過在初始化設置srnull解決錯誤:

String[][] sr = null; 

如果你想確保sr設置正確,您可以檢查是否sr仍然null了一段時間後,循環完成。

+0

謝謝!它解決了這個問題,但當然當我想運行它時,NullPointerException出現在sr [i] [n] .replaceAll(「\\ s +」,「」);行。我不能給數組 –

+0

@AkosFajszi一個單一的字符串,你會得到一個空指針異常,因爲'sr'爲空。你需要在'sr = new String [str.length] [];'之後的'sr'中存儲一些東西 – Libby