2013-04-17 73 views
0

我有一個csv,我試圖讀入一個對象數組。我不斷收到以下錯誤... java.util.InputMismatchException 我認爲這是因爲它讀取文件拆分空間而不是逗號。我相信我需要使用String.split()方法,但我不確定如何執行此操作。有什麼建議麼。這裏是我迄今爲止代碼...在Java中讀取csv

​​

下面是我一起工作的文本文件:

12345,Left-Handed Bacon Stretcher,125.95,PGH,2 

24680,Smoke Shifter,0.98,PGH,48 

86420, Pre-dug Post Hole,2.49,ATL,34 

25632,Acme Widget,98.29,LOU,342 

97531,Anti-Gravity Turbine,895.29,ATL,3 

24680,Battery-Powered Battery Charger,252.98,ATL,2 

12345,Left-Handed Bacon Stretcher,125.95,LOU,35 

97531,Anti-Gravity Turbine,895.29,PHL,8 

00000,Glass Hammer,105.90,PGH,8 

86420, Pre-dug Post Hole, 2.49,ATL,34 

01020,Inflatable Dartboard,32.95,PGH,453 

86420, Pre-dug Post Hole, 2.49,LOU,68 

86420, Pre-dug Post Hole, 2.49,PGH,124 

24680, Battery-Powered Battery Charger, 252.98, PHL, 5 
+0

作業?文本文件的內容是什麼? – Raptor

+0

編輯你的問題,邁克,不要把它作爲評論。 – hd1

+0

另外我的文本文件由partNumber,Description,price,city,quantity組成。他們存儲如下... 12345,左手培根擔架,125.95,PGH,2 – Mike

回答

2

使用scanner.useDelimiter(",");

Scanner inFile = new Scanner(new File 
          ("C:/COSC  210/Assignment#7/parts.txt")); 
    inFile.useDelimiter(","); 
    while (inFile.hasNext()) { 
     int partNumber = Integer.parseInt(inFile.next()); 
     String description = inFile.next(); 
     double price = Double.parseDouble(inFile.next()); 
     String city = inFile.next(); 
     int quantity = Integer.parseInt(inFile.nextLine().replaceAll(",", "")); 
     if(inFile.hasNextLine()) inFile.nextLine(); 
     System.out.println(partNumber+"," 
       +description+"," 
       +price+"," 
       +city+"," 
       +quantity); 
    } 
    inFile.close(); 
+0

我試過了,但它仍然無法正常工作。我一直得到同樣的例外。 – Mike

+0

編輯代碼,看看它 – NINCOMPOOP

0

掃描儀默認使用空格作爲分隔符。在讀取文件之前使用scanner.useDelimiter(",")

不過它不是傻瓜證明的內容本身可以有","

如果它否則學習那麼它的罰款,你可以看看使用一些庫,它已經這樣做了如http://sourceforge.net/projects/opencsv/files/opencsv/

而且不是固定100長數組使用名單彷彿記錄更多的則百個您的代碼將與異常中斷。

+0

我在哪裏添加scanner.useDelimiter(「,」)? – Mike

+0

inFile.useDelimiter(「,」) –

+0

也不確定爲什麼每次讀取記錄後都運行for循環。可能你想從while循環中取出。 –