如何从文件中读取int,text和double并将其存储到arraylist中?

时间:2014-10-19 02:12:50

标签: java arrays string

我要做的是阅读包含此行的文本文件

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");
        }
    } 
}

和我的库存类

    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;
    }

}

2 个答案:

答案 0 :(得分:0)

您可以使用split(String regex)
考虑这个简单的例子:

String mystr = "232131231, random name, 23.3232";
List<String> list = Arrays.asList(mystr.split(", "));
for(String str : list){
    System.out.println(str);
}


输出

232131231
random name
23.3232

如果您希望将列表设为ArrayList,则可以使用ArrayList(Collection list) ArrayList版本。

ArrayList list = new ArrayList(Arrays.asList(mystr.split(", ")));

答案 1 :(得分:0)

使用split(String regex)拆分字符串。 (请参阅split()的{​​{3}}) 然后,您可以按照自己的方式单独解析每个值。

以下是使用您的数据的示例:

String toBeSplit = "232131231, random name, 23.3232";
String[] split = toBeSplit.split(",");
int value1 = Integer.parseint(split[0].trim());
String value2 = split[1].trim();
double value3 = Double.parseDouble(split[2].trim());

我使用trim()(请trim()查看trim())以消除分裂后留下的空白区域。

这是另一种没有String toBeSplit = "232131231, random name, 23.3232"; String[] split = toBeSplit.split(", "); int value1 = Integer.parseint(split[0]); String value2 = split[1]; double value3 = Double.parseDouble(split[2]); 的方法:(只需在拆分正则表达式中添加一个空格)

{{1}}