2010-04-28 59 views
0

我需要從文件中讀取這樣一行: 5主席12.49 編輯:我想能夠擁有更多的數據行。用java語言編寫的字符串數組邏輯問題

我需要將每個單詞/數字分隔成不同的數據類型。第一個是int,第二個是String,第三個是double。然後我需要讓他們格式化爲這樣: 項目:椅子價格:$ 12.49數量:5

現在我知道如何格式化,我唯一的問題是解析字符串元素到他們尊敬的數據類型(int,字符串,雙)。

我已經試過:

String [] lines = lineInput.split(" "); 
for(String displayLines : lines) { 
    bufferedWriter.write(displayLines); 
    bufferedWriter.newLine(); 
    System.out.println(displayLines); 
} 

,但只有每個字符串分隔成一個新的行,我不能爲我的生活弄清楚如何讓每一個線檢查,如果它是一個int,字符串或雙倍。

然後我搞亂了子串,但是無法讓它工作。我甚至想過使用mod%函數,如果:

if(lines.length % 2 == 0) {it's a string}; 

但這隻適用於第一行。

請相信我,當我說我已經嘗試過這一切,我不僅僅做了一些半途而廢的努力。我只是放棄。計算器,你是我唯一的希望:(

回答

2

如果你有這種格式:[INT] [字符串]行[雙],你可以這樣做:

String [] line = lineInput.split(" "); 
int x = Integer.parseInt(line[0]); 
String s = line[1]; 
double d = Double.parseDouble(line[2]); 

您可以以此爲需要處理修改線,不同的格式。

+0

這工作!非常感謝你! – Phil 2010-04-28 20:01:51

0

我很困惑,爲什麼你基於空間分割

但無論如何,我認爲解決您看的Integer.parseInt(),雙重問題。 parseDouble()。如果你需要檢查somethi ng是一個數字,您可以使用適當的正則表達式(請參閱String.matches()方法)。或者一種可能適用於您的情況的骯髒方法是調用其中一種解析方法,並查看它是否會拋出異常...

您也可以看看Scanner類,但這可能是過度需要的。

0

首先,一個小的nit:調用你分割線「線」的字符串數組是錯誤的。警告:未編譯或測試。


    String [] words = lineInput.split(" "); 
    if (words.length != 2) 
     System.err.println ("Error parsing line [" + lineInput + "]: " + wrong number of tokens on line"); 
    else 
     try { 
     int numberOfItems = Integer.parseInt(words[0]); 
     String itemName = words[1]; 
     double itemPrice = Double.parseDouble(words[2]); 
     System.out.println (itemName + " Price: $" + itemPrice + " Quantity: " + numberOfItems); 
     } catch (NumberFormatException ex) { 
      System.err.println ("Error parsing line [" + lineInput + "]: " + ex); 
     } 
    }