我所試圖做的是閱讀具有這種線如何讀取文件中的int,text和double並將其存儲到數組列表中?
232131231,隨機名稱的文本文件,23.3232
我只知道如何讀它作爲整個行的字符串。我不知道如何單獨閱讀。這是我的測試代碼。
主要
public class JavaApplication9
{
int value1;
String value2;
double value3;
ArrayList<String> toBeSplit = new ArrayList();
String[] split;
ArrayList <Inventory> productList = new ArrayList<>();
public long ReadFile(String sfile) throws IOException
{
int x = 0;
File inFile = new File(sfile);
BufferedReader reader = new BufferedReader(new FileReader(inFile));
String sline = null;
while ((sline=reader.readLine()) != null)
{
toBeSplit.add(x,sline);
x++;
}
reader.close();
return inFile.length();
}
public void splitString()
{
int a = 0;
while (a<toBeSplit.size())
{
split = toBeSplit.get(a).split(",");
value1 = Integer.parseInt(split[0]);
value2 = split[1];
value3 = Double.parseDouble(split[2]);
productList.add(new Inventory (value1,value2,value3));
a++;
}
}
public void OutputLines()
{
for (Inventory e : productList)
{
System.out.println (e.getBarcode() +"\t"+ e.getName()+"\t"+ e.getPrice());
}
}
public static void main(String[] args)
{
try
{
JavaApplication9 instance = new JavaApplication9();
instance.ReadFile("Products (1).csv");
instance.splitString();
instance.OutputLines();
}
catch (IOException e)
{
System.out.print ("Error");
}
}
}
和我的Inventory類
public class Inventory
{
int barcode;
String name;
double price;
public Inventory (int bars,String pname,double prices)
{
barcode = bars;
name = pname;
price = prices;
}
public int getBarcode()
{
return barcode;
}
public String getName()
{
return name;
}
public double getPrice()
{
return price;
}
}
嘿,我已經做了你所說的話。由於某些原因程序無法運行。 異常在線程 「主」 java.lang.NumberFormatException:對於輸入字符串: 「01001010100011」 \t在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) \t在java.lang.Integer.parseInt(整數的.java:495) \t在java.lang.Integer.parseInt(Integer.java:527) \t在javaapplication9.JavaApplication9.splitString(JavaApplication9.java:36) \t在javaapplication9.JavaApplication9.main(JavaApplication9.java: 58) – 2014-10-19 03:21:40
@ZJJTeoh一個整數的最大值是2,147,483,647。這是因爲int只能存儲32個字節。您試圖存儲數量遠遠大於2147483647的數字1001010100011(解析int時省略前導零)。嘗試使用Long.parseLong(String)並將變量類型設置爲long。多頭是64位,並且可以存儲多達9223372036854775807. – 2014-10-19 03:50:05
是我想到了。非常感謝 – 2014-10-19 03:50:56