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.

convirtiendo los valores de cadena numérica en formato .CSV a enteros en Java

Estoy tratando de obtener 3 valores enteros de un archivo CSV y cargarlos en una variable que pueda usar en una función cuadrática. Lo que me está costando es que cuando obtengo los valores del CSV, se tratan como una cadena. He intentado usar Integer.parseInt(variable); y Double.parseDouble(variable);. He intentado solucionar el problema con variable.getClass() y mensajes de impresión y sigo sin entender qué ocurre.

Mi código es el siguiente:

public static void main(String[] args) {
        String pathFile = "/Users/stephen/QuadData3.csv";
        String line = "";

    try {
        BufferedReader br = new BufferedReader(new FileReader(pathFile));
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");

            int a = Integer.parseInt(values[0]);
            int b = Integer.parseInt(values[1]);
            int c = Integer.parseInt(values[2]);

            System.out.println(a);
            System.out.println(b);
            System.out.println(c);


        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();

    }
}

Obtengo el siguiente error:
Exception in thread "main" java.lang.NumberFormatException: For input string: "4"

Cualquier ayuda sería muy apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con la codificación del archivo CSV. El mensaje de error muestra que la cadena que se pasa a parseInt() incluye un carácter especial al principio, lo cual es probablemente un indicador de la codificación.

    Una cosa que puedes intentar es abrir el archivo CSV en un editor de texto y comprobar la codificación. Debe ser UTF-8 o ASCII. Si es una codificación diferente, intenta guardar el archivo con codificación UTF-8 o ASCII y ve si eso soluciona el problema.

    Otra cosa que puedes comprobar es si hay algún carácter oculto en el archivo CSV, como espacios o tabulaciones, que puedan estar causando problemas. Puedes intentar recortar las cadenas antes de pasarlas a parseInt() usando values[0].trim().

    Si estas sugerencias no resuelven el problema, intenta imprimir los valores de values[0], values[1] y values[2] para verificar que realmente son cadenas que contienen solo números sin caracteres adicionales. También puedes intentar usar Integer.valueOf() en lugar de parseInt() para ver si eso hace alguna diferencia.

    ¡Espero que esto ayude a resolver tu problema!

Comments are closed.