我有一个名为fields
的2D数组,我需要能够保存其内容(颜色首字母)。
try {
BufferedWriter outFile = new BufferedWriter(new FileWriter("Drawing_NEW.csv"));
for (int y = 0; y < totalY; y++) {
for (int x = 0; x < totalX - 1; x++) {
outFile.write(fields[x][y].getText() + ",");
}
outFile.write(fields[totalX - 1][y].getText());
outFile.newLine();
}
outFile.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
上面的代码会像这样保存数组中的所有内容。请注意,数组是20乘20(下面的输出只是整个事物的片段)。
W,W,W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W,W
W,W,W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W,W
但我现在必须制作一个循环,如果颜色与下一个添加到计数器的颜色相同,如果没有,则写入新颜色并将计数器设置回1然后再次检查下一个和等等。下面是一个示例模板,并输出了它应该是什么样子。
(colour1,count1, colour2,count2, colour3,count3,)
W,3,G,15,W,2
W,3,G,3,Y,5,G,7,W,2
随意提问。谢谢。
答案 0 :(得分:2)
这意味着您需要在循环中添加一些状态以跟踪以前的值。根据您的示例中的AFAIU,您只想为相同的&#34;行&#34;中的相同字符串的序列编写一个数字。数组。如果是这样,请尝试以下代码
for (int y = 0; y < totalY; y++) {
string prev = ""; // this value doesn't equal anything you can see in the UI, so the first iteration of the loop works as expected
int cnt = 0;
for (int x = 0; x < totalX - 1; x++) {
string cur = fields[x][y].getText();
if(cur.equals(prev)) {
cnt ++;
}
else {
if(cnt > 0) // skip the first empty line
outFile.write(prev + "," + cnt + ",");
prev = cur;
cnt = 1;
}
}
// write the last sequence
outFile.write(prev + "," + cnt);
outFile.newLine();
}