我所试图做的是阅读具有这种线如何读取文件中的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