将多维数组写入文本文件文件
Writing multi-dimensional array into text file file
我有一项任务涉及将数组值(写入)传递到 Java 中的文本 (.txt) 文件中。这是我第一次使用 BufferedWriter
并且我已经尝试了很多 if
语句的变体,但是在它命中之前看不到让我的程序以 matrix[i][j] + ","
格式编写最后一列索引并写入 整数后不带 逗号。
我尝试使用 BufferedWriter
扩展的 append()
方法,但我认为我没有正确使用它。
当前代码
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()
方法加在一起同一条线。那我该怎么做呢?
您可以将最里面的 for
循环更改为:
for (int j = 0; j < matrix[i].length; j++) {
bw.write(matrix[i][j] + ((j == matrix[i].length-1) ? "" : ","));
}
这会放入一个简单的三元运算符来执行此操作:
if
j
是最后一个索引:
- 什么都不打印 (
</code>)</li>
</ul>
<p><strong><code>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] + ",");
}
}
比较matrix[i].length与j,判断是否打印","
您只需添加一个 if-else 语句来决定是否打印逗号。
希望对您有所帮助!
您可以尝试在迭代中添加 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?
}
}
希望有用!
我有一项任务涉及将数组值(写入)传递到 Java 中的文本 (.txt) 文件中。这是我第一次使用 BufferedWriter
并且我已经尝试了很多 if
语句的变体,但是在它命中之前看不到让我的程序以 matrix[i][j] + ","
格式编写最后一列索引并写入 整数后不带 逗号。
我尝试使用 BufferedWriter
扩展的 append()
方法,但我认为我没有正确使用它。
当前代码
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()
方法加在一起同一条线。那我该怎么做呢?
您可以将最里面的 for
循环更改为:
for (int j = 0; j < matrix[i].length; j++) {
bw.write(matrix[i][j] + ((j == matrix[i].length-1) ? "" : ","));
}
这会放入一个简单的三元运算符来执行此操作:
if
j
是最后一个索引:
- 什么都不打印 (
</code>)</li> </ul> <p><strong><code>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] + ","); } }
- 打印逗号 (
比较matrix[i].length与j,判断是否打印","
您只需添加一个 if-else 语句来决定是否打印逗号。
希望对您有所帮助!
您可以尝试在迭代中添加 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?
}
}
希望有用!