我要做的是阅读包含此行的文本文件
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;
}
}
答案 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}}