的基本想法是,你創建一個文件讀者對象
FileReader fr = new FileReader('file.txt');
,然後通過行每行解析和保存的東西一些內部數據存儲(數組,HashMap中)走在文件行。
這個例子中的while循環就是這樣做的。 FileReader
課程將負責爲你結束的行,並在沒有更多行要讀取時返回null
。在while循環中你需要做的是分析每一行,並將不同的數據位(課程名稱,價格等)彼此分開。
編輯:要解析行,你會做類似下面的事情。 while循環內的內容取決於如何格式化菜單文件。假定菜單文件包含課程價格和課程名稱(按此順序),並在每行上用逗號分隔,則以下方法工作。
12.95$,Penne ala Arabiata
8.15$,Fish Soup
請注意,如果您這樣做,您不能在價格中使用逗號。當然,您可以使用分號作爲數據字段之間的分隔符而不是逗號。數據字段的數量當然也取決於您。
String line = "";
// read lines from file
while ((line = fr.readLine()) != null) {
// parse each line
tokens = line.split(",");
String price = tokens[0];
String courseName = tokens[1];
// extract all other information
}
在您的最終代碼中,您需要將數據字段保存到某個結構中,而不是從文件中提取它們。另外需要注意的是,由於美元符號,價格是一個字符串不是數字。如果你想用價格進行任何計算,你當然需要將其轉換爲parseFloat()
或parseDouble()
。
當然,如果您確實使用csv(逗號分隔值)格式,最好是讓csv庫爲您進行解析,而不是自己編寫解析器。
http://opencsv.sourceforge.net/
我想在記事本文件中,我也會有一個代碼,每個項目,一個字符串標題和價格。 不能想象id需要比菜單上更多的信息 – OVERTONE 2010-01-13 14:03:43
那麼像「1」,「Foo」,12.34「?每個項目由一個新行分隔? – Alasdair 2010-01-13 14:11:49
不知道在java中foo bar命令意味着什麼,但沒有發現。由一條新線分開聽起來正確的方式,我已經奠定了。或者可能有多少標籤。 – OVERTONE 2010-01-14 13:47:13