gpt4 book ai didi

java - 使用 BufferedWriter 和 Loop 保存 2D JTextField 数组中的文本

转载 作者:行者123 更新时间:2023-12-02 02:46:31 25 4
gpt4 key购买 nike

我有一个名为 fields 的二维数组,我需要能够保存其内容(颜色缩写)。

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 x 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

欢迎提问。谢谢。

最佳答案

这意味着您需要向循环添加一些状态以跟踪先前的值。从您的示例中,您只想为数组同一“行”中相同字符串的序列写入一个数字。如果是这样,请尝试以下代码

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();
}

关于java - 使用 BufferedWriter 和 Loop 保存 2D JTextField 数组中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com