Java.lang.NumberFormatException: Invalid int: "5"
Trato de leer un archivo .txt que es básicamente un archivo CSV que se encuentra en la carpeta de activos en Android. En la primera fila hay el número de fila y columnas del archivo El resto está compuesto por los valores, yo uso un ";" para separarse entre sí.
Aquí está el código que causa este error extraño:
- Cómo escapar% en String.Format?
- Regex palabra entera
- Cómo detener ProGuard de eliminar la interfaz Serializable de una clase
- El valor en edittext no se muestra hasta que se enfoque. Androide
- Refrescar una vista dentro de un fragmento
public static int[][] getMatrix(InputStream stream) throws Exception { BufferedReader br = new BufferedReader((new InputStreamReader(stream, "UTF-8"))); String buffer; String[] current; int[][] marbles = null; //Reading the matrix from file if((buffer = br.readLine()) != null) { current = buffer.split(delimiter); if(current.length !=2){ throw new Exception("File format is not respected"); } marbles = new int[Integer.parseInt(current[0])][Integer.parseInt(current[1])]; int count = 0; while ((buffer = br.readLine()) != null) { current = buffer.split(delimiter); for (int i=0;i<current.length;i++){ marbles[count][i] = Integer.parseInt(current[i]); } count++; } } br.close(); return marbles; }
Leo un archivo usando como InputStream el que obtengo del método getAssets (). Open ().
Aquí está el archivo csv:
5;11 1;1;2;1;1;2;1;1;1;2;-1 1;2;1;1;2;2;1;2;2;1;-1 2;2;1;2;1;2;2;1;1;2;-1 1;1;2;1;1;1;1;2;1;2;-1 2;2;1;2;2;1;2;1;1;1;-1
Tengo el error en la primera línea, pero muestra claramente que la cadena que lo causa es un "5" adecuado.
Error:
java.lang.NumberFormatException: Invalid int: "5"
que es, por supuesto, causada por la parte de código que intenta convertir la cadena en un entero.
- Cambiar permisos de archivo en DDMS (Android)
- Analizar XML desde un sitio web a un dispositivo Android
- Error al usar ScrimInsetFrameLayout
- Semáforos: ¿Dónde puedo aprender acerca de conceptos básicos como permisos, imparcialidad, barging, etc.
- La ubicación del proyecto contiene espacios en blanco. (Android Studio)
- Cursor while loop devuelve cada valor pero el último
- Vista predeterminada del cajón de navegación a ExpandableListView
- Imagen "Zoom In / Out" en el botón Haga clic en Android?
Mi salvaje suposición es que su archivo contiene una lista de materiales al principio de su flujo de texto que es confuso su analizador. Puede utilizar el comando file
en un sistema * NIX para verificar esto.
Intente intercambiar esa primera línea con otra y vea si obtiene el mismo error con el primer número en otra línea. Si se configuró la lista de materiales, google "eliminación de bombeo de utf-8" para obtener más instrucciones.
La única causa posible para este comportamiento son símbolos no imprimibles en su archivo. Mira esta pregunta: ¿Cómo puedo reemplazar caracteres Unicode no imprimibles en Java? y aplique la función dada a todos sus valores, es decir:
marbles = new int[Integer.parseInt(current[0].replaceAll("\\p{C}", "?"))][Integer.parseInt(current[1].replaceAll("\\p{C}", "?"))]
En mi caso el problema que un atributo personalizado definido sin ningún valor asignado.
<FrameLayout android:id="@+id/header" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="?attr/image_visibility"> </FrameLayout>
Y esta es la definición del atributo personalizado:
<attr name="image_visibility"> <enum name="visible" value="0"/> <enum name="invisible" value="1"/> <enum name="gone" value="2"/> </attr>
El problema era que no asigné ningún valor para este atributo personalizado.
Eliminar ese atributo personalizado o asignarle un valor solucionará el error.
- build.gradle en el proyecto vs. build.gradle en la aplicación
- Android Studio Error al recuperar – Conexión rechazada: conectar