es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Almacena un valor específico de un archivo CSV en una lista en Java.

El CSV se ve así:

    Nombre;Cantidad;Fecha
    Netflix;5;1.1.2021

Quiero una lista diferente para cada gasto, una para entretenimiento, una para transporte, etc. Sin embargo, solo quiero que la cantidad se almacene en una lista, ¿cómo puedo hacer eso?

“`java
public class CsvReader {
public static void readDataLineByLine(String archivo) {
try {
// Crear un objeto de la clase FileReader con el archivo CSV como parámetro.
FileReader lector = new FileReader(archivo);

<pre><code> // Crear un objeto de la clase CSVParserBuilder con
// punto y coma como separador personalizado.
CSVParser parser = new CSVParserBuilder().withSeparator(';').build();

// Crear un objeto de la clase CSVReader con los parámetros
// lector y parser.
CSVReader csvReader = new CSVReaderBuilder(lector).withCSVParser(parser).build();

// Leer todos los datos de una vez
List<string[]> todosLosDatos = csvReader.readAll();
List<string> entretenimiento = new ArrayList<>();

// Imprimir los datos.
for (String[] fila : todosLosDatos) {
for (String celda : fila) {
System.out.print(celda + "\t");
if (celda.startsWith("Netflix")){
entretenimiento.add(celda);
}
}
System.out.println();
System.out.println(entretenimiento);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
CsvReader.readDataLineByLine("tt.csv");
}
</code></pre>

}
“`</string[]>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para almacenar solo la cantidad de cada gasto en una lista, necesitas modificar ligeramente el código. Aquí tienes un ejemplo de cómo lograr esto:

    public class CsvReader {
        public static void readDataLineByLine(String file) {
            try {
                // Crea un objeto de la clase FileReader con el archivo CSV como parámetro.
                FileReader filereader = new FileReader(file);
    
                // Crea un objeto csvParser con el separador personalizado punto y coma
                CSVParser parser = new CSVParserBuilder().withSeparator(';').build();
    
                // Crea un objeto csvReader con el parámetro filereader y parser
                CSVReader csvReader = new CSVReaderBuilder(filereader).withCSVParser(parser).build();
    
                // Crearemos listas separadas para cada categoría de gasto
                List<double> entertainment = new ArrayList<>();
                List<double> transport = new ArrayList<>();
                // Agrega más listas para otras categorías según sea necesario
    
                // Lee todos los datos de una vez
                List<string[]> allData = csvReader.readAll();
    
                // Recorre cada fila de datos y almacena la cantidad en la lista correcta
                for (String[] row : allData) {
                    String category = row[0]; // Asumiendo que el nombre de la categoría está en la primera columna
                    Double amount = Double.parseDouble(row[1]); // Convierte la cantidad a un double
    
                    // Verifica la categoría y agrega la cantidad a la lista correcta
                    if (category.equalsIgnoreCase("entertainment")) {
                        entertainment.add(amount);
                    } else if (category.equalsIgnoreCase("transport")) {
                        transport.add(amount);
                    }
                    // Agrega más verificaciones de categoría según sea necesario
                }
    
                // Imprime los resultados
                System.out.println("Gastos de entretenimiento: " + entertainment);
                System.out.println("Gastos de transporte: " + transport);
                // Imprime resultados para otras listas según sea necesario
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            CsvReader.readDataLineByLine("tt.csv");
        }
    }
    

    En este código modificado, creamos listas separadas para cada categoría de gasto (en este ejemplo, solo “Entretenimiento” y “Transporte”). Luego recorremos cada fila de datos y almacenamos la cantidad en la lista correcta basándonos en la categoría. Finalmente, imprimimos los resultados para cada lista.

    Ten en cuenta que esto asume que el nombre de la categoría de gasto está en la primera columna del archivo CSV. Si la categoría se encuentra en una columna diferente, deberás modificar el código en consecuencia.</string[]>

Comments are closed.