我真的在解析一個文本文件掙扎。我有一個文本文件,它是在下列格式Java緩衝讀取器文本文件解析
ID
Float Float
Float Float
.... // variable number of floats
END
ID
Float Float
Float Float
....
END
等然而,ID可以表示兩個值之一,0,這意味着它是一個新的領域,或-1,這意味着它是與上一個新領域。相關領域可以自我重複的次數是無限的。這是問題發生的地方。
因爲我在一個庫中有一個方法,它需要一個新的Floats的ArrayList,然後是一個ArrayList的ArrayList的相關的浮點數。
當我嘗試爲此編寫邏輯代碼時,我只是在循環中不斷深入嵌入。
我真的很感激任何關於我應該如何去做的建議。提前致謝。
這是我到目前爲止的代碼。
BufferedReader br = new BufferedReader(new FileReader(buildingsFile));
String[] line = br.readLine().trim().split(" ");
boolean original = true;
while(true)
{
if(line[0].equals("END"))
break;
startCoordinate = new Coordinate(Double.parseDouble(line[0]), Double.parseDouble(line[1]));
while(true)
{
line = br.readLine().trim().split(" ");
if(!line[0].equals("END") && original == true)
polypoints.add(new Coordinate(Double.parseDouble(line[0]), Double.parseDouble(line[1])));
else if(!line[0].equals("END") && original == false)
cutout.add(new Coordinate(Double.parseDouble(line[0]), Double.parseDouble(line[1])));
else if(line[0].equals("END") && original == false)
{
cutouts.add(cutout);
cutout.clear();
}
else if(line[0].equals("-99999"))
original = false;
else if(line[0].equals("0"))
break;
}
buildingDB.addBuilding(mapName, startCoord, polypoints, cutouts);
}
新代碼
int i = 0;
BufferedReader br = new BufferedReader(new FileReader(buildingsFile));
String[] line;
while(true)
{
line = br.readLine().trim().split(" ");
if(line[0].equals("END"))
break;
polygons.add(new Polygon(line));
while(true)
{
line = br.readLine().trim().split(" ");
if(line[0].equals("END"))
break;
polygons.get(i).addCoord(new Coordinate(Double.parseDouble(line[0]), Double.parseDouble(line[1])));
}
i++;
}
System.out.println(polygons.size());
int j = 0;
for(i = 0; i< polygons.size(); i++)
{
Building newBuilding = new Building();
if(polygons.get(i).isNew == true)
{
newBuilding = new Building();
newBuilding.startCoord = new Coordinate(polygons.get(i).x, polygons.get(i).y);
}
while(polygons.get(i).isNew == false)
newBuilding.cutouts.add(polygons.get(i).coords);
buildings.add(newBuilding);
}
for(i = 0; i<buildings.size(); i++)
{
System.out.println(i);
buildingDB.addBuilding(mapName, buildings.get(i).startCoord, buildings.get(i).polypoint, buildings.get(i).cutouts);
}
你可以發表你目前在做什麼(你的代碼),所以我們可以根據你當前的策略提出建議,而不是覆蓋你已經完成的同一個目標? – 2010-02-11 21:03:31