gpt4 book ai didi

java - 使用 csv 文件中的数据打印数字

转载 作者:行者123 更新时间:2023-11-30 07:36:27 25 4
gpt4 key购买 nike

我正在尝试创建一个小型机器学习系统,用于从 csv 文件打印图片图案。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class PicturePrinter {

BufferedReader bufferedReader = null;
String line = "";
int numData = 0;

int[][] data = new int[20][65];

public void readCSVFile(String csvFile) {

try {
bufferedReader = new BufferedReader(new FileReader(csvFile));

String[] dataFromCSV = null;
while ((line = bufferedReader.readLine()) != null) {
dataFromCSV = line.split(",");
for (String dataFromCSV1 : dataFromCSV) {
numData = Integer.parseInt(dataFromCSV1); //parse data
System.out.print(numData + ",");
for (int row = 0; row < 20; row++) {
for (int col = 0; col < 65; col++) {
data[row][col] = numData; //store numData
}
}
}
System.out.println();
}

} catch (IOException | NumberFormatException ex) {
ex.printStackTrace();
}

}

public void print() {
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
if (numData == 0) {
System.out.print(" ");
} else if (numData > 6) {
System.out.print(" X ");
} else if (numData < 6 || numData > 0) {
System.out.print(" x ");
} else {
}
}
System.out.println();
}
}

public static void main(String[] args) {
PicturePrinter picturePrinter = new PicturePrinter();
System.out.println("Reading data...");
picturePrinter.readCSVFile("digits.csv");
picturePrinter.print();
}

}

我已经读取了 csv 文件并将其存储在数组中,但随后我必须将其以 8x8 的格式打印出来。我尝试使用 if 语句进行循环,正如您在我的 print() 方法中看到的那样,但它给了我这样的结果。

 X  X  X  X  X  X  X  X 
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X

打印时应该像手写的 0。数据如下所示。

enter image description here

我该如何解决这个问题?我已经尝试了我能想到的一切,有什么我错过的吗?提前致谢。

最佳答案

看起来 numData 设置为 ReadCSVFile 方法中读取的最后一个数字。然后 print() 方法进入并运行多次,numData 等于 9,即输入中的最后一个数字。

自 9 > 6 起;你会得到一堆 X。

只需将此行代码添加到第二个 for 循环定义下的 print() 方法即可:

numData = 数据[行][列];

将来,使用类级变量(如上面的 numDatadata)时要格外小心。通常最好使用局部变量作为函数的输入/输出,这将帮助您避免此类错误,并且还可以生成更干净、更易于维护的代码。

编辑:ReadCSV 文件方法中存在另一个问题,其中读取了所有值,并将 numData 设置为最后一个值。然后双循环出现并在嵌套数组的每个单元格中写入相同的值(9)

编辑:新的 print() 方法应如下所示:

    public void print() {
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
numData = data[row][col];
if (numData == 0) {
System.out.print(" ");
} else if (numData > 6) {
System.out.print(" X ");
} else if (numData < 6 || numData > 0) {
System.out.print(" x ");
} else {
}
}
System.out.println();
}

新的 readCSVFile() 方法应如下所示

        public void readCSVFile(String csvFile) {
int currRow = 0;
int currCol = 0;
try {
bufferedReader = new BufferedReader(new FileReader(csvFile));

String[] dataFromCSV = null;
while((line = bufferedReader.readLine()) != null) {
currRow++;
dataFromCSV = line.split(",");
for(String dataFromCSV1 : dataFromCSV) {
currCol++;
numData = Integer.parseInt(dataFromCSV1); //parse data
System.out.print(numData + ",");
data[currRow][currCol] = numData; //store numData
}
System.out.println();
}

} catch(IOException | NumberFormatException ex) {
ex.printStackTrace();
}

}

关于java - 使用 csv 文件中的数据打印数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329770/

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