我在从文本文件读取到arraylist时遇到问题。问题是我不知道如何阅读多种类型,因为在我的arraylist中有Points,Strings,booleans,因此linesplit不起作用。我检查了所有主题,但没有找到解决方案。
编辑:Elrendezes类看起来像
class Elrendezes {
protected Point Po;
protected String hely;
protected String foglalo;
protected boolean foglalt;
}
以下是我的文件的样子:
java.awt.Point[x=16,y=13], 1, name1, false
读取的方法是
public static ArrayList<Elrendezes> readDataFromFile(){
ArrayList<Elrendezes> ElrList = new ArrayList<Elrendezes>();
FileInputStream fstream = null;
try
{
fstream = new FileInputStream("src/files/DataFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = null ;
String tokens[] = strLine.split(", ");
while ((strLine = br.readLine()) != null) {
tokens = strLine.split(", ");
// THIS DOES NOT WORK: ElrList.add(new Elrendezes(tokens[0], tokens[1], tokens[2], tokens[3]));
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try { fstream.close(); } catch ( Exception ignore ) {}
}
return ElrList;
}
答案 0 :(得分:1)
由于你可能不知道正则表达式,我将使用:
获取x
和y
:
int v1 = strLine.indexOf("x=");
int v2 = strLine.indexOf(",y=");
int v3 = strLine.indexOf("]") ;
string x = strLine.substring(v1 +2, v2);
string y = strLine.substring(v2 +3, v3);
其余部分的断点表示。
string secondpart = strLine.substring(v3+1);
secondpart
。使用Integer.parseInt()等转换字符串表示。
构建您的对象。
注意:写得匆忙,检查用于x,y和secondpart的索引是否正确。 我还假设输入是正确的。
答案 1 :(得分:0)
我认为你必须选择一个字符来分割字符串。
将拆分字符串转换为布尔值,整数等
Elrendezes(String[] s){
Point Po = s[0]; // dont know how to cast string to point, never done before
hely = s[1];
foglalo = s[2];
foglalt = Boolean.parseBoolean(s[3]);
}