我遇到了这个问题(不是与学校有关的)。 原始文本文件包含:
[Name1]
//Feature1.1
//Feature1.2
[Name2]
//Feature2.1
//Feature2.2
[Name3]
//Feature3.1
//Feature3.2
... and so on ...
我想要的是这样的:
[Name1]//Feature1.1
[Name1]//Feature1.2
[Name2]//Feature2.1
[Name2]//Feature2.2
[Name3]//Feature3.1
[Name3]//Feature3.2
... and so on ...
我需要有关算法(NOT代码)如何制作目标文件的帮助。 我感谢任何帮助。
这就是我在逻辑中得到的: 我将输入分成两个List。(前面的数字是输入文件中的行号) 列表1:
1[Name1]
4[Name2]
7[Name3]
列表2:
2//Feature1.1
3//Feature1.2
5//Feature2.1
6//Feature2.2
8//Feature3.1
9//Feature3.2
然后我将它们合并到finalList中,使用for循环和条件:
for(int i = 0; i < List1.size() - 1; i++)
{
for(int j = 0; j < List2.size() - 1; j++)
{
// this get the number 1, 4, or 7
if(Integer.parseInt(List1.get(i).substring(0,List1.get(i).indexof("[")) < Integer.parseInt(List1.get(i).substring(0,List2.get(j).indexof("["))) // the second part get 2,3,5,6,8, or 9
{
finalList.add(List1.get(i) + List2.get(j));
}
}
}
在此之后,我得到的是:
1[Name1]2//Feature1.1
1[Name1]3//Feature1.2
1[Name1]5//Feature2.1
1[Name1]6//Feature2.2
1[Name1]8//Feature3.1
1[Name1]9//Feature3.2
4[Name2]5//Feature2.1
4[Name2]6//Feature2.2
4[Name2]8//Feature3.1
4[Name2]9//Feature3.2
7[Name3]8//Feature3.1
7[Name3]9//Feature3.2
我想要的是:
1[Name1]2//Feature1.1
1[Name1]3//Feature1.2
4[Name2]5//Feature2.1
4[Name2]6//Feature2.2
7[Name3]8//Feature3.1
7[Name3]9//Feature3.2
在这一步之后,我将把finalList的每个元素中的字符串编辑成:
[Name1]//Feature1.1
[Name1]//Feature1.2
[Name2]//Feature2.1
[Name2]//Feature2.2
[Name3]//Feature3.1
[Name3]//Feature3.2
再次感谢所有的建议和想法。 我一直在努力解决这个问题。关键是我不明白完成这项工作背后的逻辑。
答案 0 :(得分:1)
最后我解决了这个问题。 这是我做的:
while ((inputLine = br.readLine()) != null)
{
if (inputLine.substring(0, 1).equals("["))
{
nameList.add(inputLine.substring(0, inputLine.indexOf("]")+1));
checkPoint = nameList.size() - 1;
}
else
{
finalList.add(nameList.get(checkPoint) + inputLine );
}
}