Java .csv вопрос о выписке - PullRequest
1 голос
/ 08 марта 2020

В настоящее время работает над проектом, который импортирует файл .csv (который состоит из 21 строки, 20 столбцов), захватывает его в массив и затем печатает указанную ячейку c в электронной таблице ... В настоящее время возникает проблема, которая приводит к тому, что на выходе получается 20 строк и один столбец со значением «ноль» За исключением того, что вторая строка в выходных данных кажется последней строкой, ячейкой второго столбца из файла. Что происходит с нулем и почему он вытягивает данные последней строки? Спасибо, ребята / девочки за любой вклад.

public class cvsPull {

    public String[][] myArray;
    String csvFile = "Crime.csv";

    public Class csvPull() {


    myArray = new String[20][20];


    try {
        s = new Scanner (new BufferedReader(new FileReader(csvFile)));

        while (s.hasNext()) {
            int theRow = 1;
            int theCol = 0;
            InputLine = s.nextLine();
            String[] InArray = InputLine.split(",");

            for (String InArray1 : InArray) {
                myArray[theRow][theCol] = InArray1;
                theCol++;
                if (theCol==20) {
                   theCol=0;
                   theRow++;
                }
             // System.out.println(myArray[theRow][theCol]);

             }

        } 
        for (String[] theString : myArray) {
            System.out.println(theString[1]);
        }
    } catch (IOException ioe) {
        System.out.println("incorrect file name" + ioe.getMessage());
    }
}

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Вы сбрасываете счетчик строк в 1 в начале каждого l oop:

    while (s.hasNext()) {
        int theRow = 1;
        int theCol = 0;

Это означает, что каждая строка файла записывается в одно и то же место в памяти. Кроме того, первый индекс для строк равен 0, как и для столбцов, поэтому сначала нужно установить его в 0:

    int theRow = 0;
    while (s.hasNext()) {
        int theCol = 0;
0 голосов
/ 08 марта 2020

Я предлагаю использовать lib для чтения файла CSV: https://mkyong.com/java/how-to-read-and-parse-csv-file-in-java/

import com.opencsv.CSVReader;

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

public class CSVReaderExample {

    public static void main(String[] args) {

        String csvFile = "/Users/mkyong/csv/country3.csv";

        CSVReader reader = null;
        try {
            reader = new CSVReader(new FileReader(csvFile));
            String[] line;
            while ((line = reader.readNext()) != null) {
                System.out.println("Country [id= " + line[0] + ", code= " + line[1] + " , name=" + line[2] + "]");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}
...