2015-06-05 49 views
1

你好這是我的代碼從文件中讀取讀取從文件的陣列。 (JAVA)

case 11: { 
    String line; 
    String temp[]; 
    System.out.println("Podaj nazwę pliku z jakiego odczytać playlistę."); 
    nazwa11 = odczyt.next(); 
    try { 

     FileReader fileReader = new FileReader(nazwa11); 

     BufferedReader bufferedReader = new BufferedReader(fileReader); 
     playlists.add(new Playlist(bufferedReader.readLine())); 
     x++; 
     while((line = bufferedReader.readLine())!=null){ 
      String delimiter = "|"; 
      temp = line.split(delimiter); 
      int rok; 
      rok = Integer.parseInt(temp[2]); 
      playlists.get(x).dodajUtwor(temp[0], temp[1], rok); 


     } 


     bufferedReader.close(); 
    } catch (FileNotFoundException ex) { 
     System.out.println("Nie znaleziono pliku: '" + nazwa11 + "'"); 
    } catch (IOException ex) { 
     System.out.println("Error reading file '" + nazwa11 + "'"); 
    } 
    break; 
} 

示例文件看起來是這樣的:

Pop 
Test|Test|2010 
Test1|Test1|2001 

給我的錯誤

Exception in thread "main" java.lang.NumberFormatException: For input string: "s" 

爲什麼我line.split沒有按發現「|」時不會分裂?我想它分裂了T-E-S,任何提示?

+2

您的分隔符正在作爲正則表達式進行評估,因此您需要跳過管道:'delimiter =「\\ |」;' – azurefrog

+0

謝謝!它的工作原理:) – EyeMaze

回答

2

管道符 「|」是執行匹配時具有特殊意義的元字符之一。

page給你的這些特殊字符及其含義的完整列表。

所以,在你的程序中,修改下列行,

String delimiter = "|"; 

String delimiter = "\\|"; 

這會給你你想要的結果。

+0

如果這對你有用,你能否接受答案? – Sathish