我有一项任务涉及将数组值(写入)传递到Java中的文本(.txt)文件中。这是我第一次使用BufferedWriter
并且我在if
语句上尝试了很多变体,但看不到让我的程序以matrix[i][j] + ","
格式编写,直到它出现最后一列索引并在整数后写入而不用逗号。
我尝试使用append()
扩展的BufferedWriter
方法,但我认为我没有正确使用它。
当前代码
void writeMatrix(String filename, int[][] matrix) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
bw.write(matrix[i][j] + ",");
}
bw.newLine();
}
bw.flush();
} catch (IOException e) {}
}
当前输出
1,2,3,
4,5,6,
7,8,9,
我需要每行的最后一位数不包括逗号,BufferedWriter
显然不希望在同一行上一起添加两个write()
方法。那我怎么能这样做呢?
答案 0 :(得分:1)
您可以将最里面的for
循环更改为:
for (int j = 0; j < matrix[i].length; j++) {
bw.write(matrix[i][j] + ((j == matrix[i].length-1) ? "" : ","));
}
这就是一个简单的三元运算符:
if
j
是最后一个索引:
) <强> else
强>
,
)根据要求,这将等同于此if-else
声明:
for (int j = 0; j < matrix[i].length; j++) {
if(j == matrix[i].length-1) {
bw.write(matrix[i][j]);
} else {
bw.write(matrix[i][j] + ",");
}
}
答案 1 :(得分:0)
将矩阵[i] .length与j进行比较,然后确定打印&#34;,&#34;或不。
答案 2 :(得分:0)
你只需添加一个if-else语句来决定是否打印逗号。
希望这有帮助!
答案 3 :(得分:0)
您可以尝试在迭代中添加if语句。如果j
位于最后一列,则它不会将逗号打印到您的文件中,否则会打印出来。
void writeMatrix(String filename, int[][] matrix) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if(j == matrix[i].length - 1){
bw.write(matrix[i][j]);
} else{
bw.write(matrix[i][j] + ",");
}
}
bw.newLine();
}
bw.flush();
} catch (IOException e) {
//why does the catch need its own curly?
}
}
希望它有效!。