Autor
|
Tema: Error al leer double de fichero [HELP] (Leído 3,161 veces)
|
JonaLamper
Desconectado
Mensajes: 394
|
Buenas tardes! A ver... tengo un código muy fácil que no sé por qué demonios no funciona Estoy tratando de leer un double desde fichero así: @Override public double readDouble(Scanner in) { return in.nextDouble(); } double element = readDouble(in);
Y en el fichero tengo el siguiente número escrito: 48.46372902270499. Si asigno ese número directamente a la variable element, entonces sí lo procesa, o sea que debe haber algún tipo de fallo en la lectura, pero no sé cuál El Scanner in está simplemente declarado así: Scanner in;
Somebody help me P.D: la excepción lanzada es InputMismatchException, pero la he buscado y simplemente dice que no coincide el "token" leído con el esperado.
|
|
« Última modificación: 21 Enero 2019, 19:59 pm por JonaLamper »
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Buenas tardes! A ver... tengo un código muy fácil que no sé por qué demonios no funciona Estoy tratando de leer un double desde fichero así: @Override public double readDouble(Scanner in) { return in.nextDouble(); } double element = readDouble(in);
Y en el fichero tengo el siguiente número escrito: 48.46372902270499. Si asigno ese número directamente a la variable element, entonces sí lo procesa, o sea que debe haber algún tipo de fallo en la lectura, pero no sé cuál El Scanner in está simplemente declarado así: Scanner in;
Somebody help me P.D: la excepción lanzada es InputMismatchException, pero la he buscado y simplemente dice que no coincide el "token" leído con el esperado. wtf pon mas source dog, pare ver que pasa.
|
|
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Aparenta ser un simple problema de caracter delimitador... Saludos
|
|
|
En línea
|
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
public double readDouble(Scanner in) { return in.nextDouble(); } in.useDelimiter("\n") double elem = readDouble(in);;
Estoy usando el delimitador "\n" y he puesto los datos en forma de columna en el .txt. Aún así, continúa dando el mismo error
|
|
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
JonaLamper
Desconectado
Mensajes: 394
|
Mi fichero tiene estos datos: 48.46372902270499,72.28360046911516 65.52885493079854,22.676786207855894 Incluso usando el código del ejemplo no funciona: in.useDelimiter(",|\n"); double elem = in.nextDouble();
Incluso en ejemplo de páginas "fiables" no funciona. Por ejemplo: http://www.java2s.com/Code/Java/Development-Class/UseScannertoreadvarioustypesofdatafromafile.htmHe copiado el código de esa página en un proyecto y cuando va a leer el número 12.2, se supone que debe entrar en el if del src.hasNextDouble, pero no, lo lee como si fuese un String. Menuda broma... ACTUALIZO: haciendo esto funciona, pero no es muy elegante... in.useDelimiter(" "); double doubleElem = Double. parseDouble(elem ); System. out. println(doubleElem );
|
|
« Última modificación: 22 Enero 2019, 00:33 am por JonaLamper »
|
En línea
|
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
|
|
|
WHK
|
Te recomiendo que proceces linea por linea y parsees la data con expresión regular, es aprueba de errores, si la expresión falla es porque la linea tiene un formato incorrecto.
|
|
|
En línea
|
|
|
|
EdePC
|
- Sucede que la Localización da formato a los números decimales y moneda, por ejemplo en EEUU la coma ( , ) no tiene nada que ver con números decimales (Double), pero el punto ( . ) si. Doy por sentado de que tu Sistema Operativo tiene configurada una localización NO EEUU, por lo que tu Sistema interpreta la coma ( , ) como separador decimal, y no tiene ni idea de lo que hace un punto ( . ) entre dos números enteros . -- Si utilizas decimales con punto ( . ) debes especificar una Localización US (United States), Revisa la línea 5 y 22 que he agregado: import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; import java.util.Locale; public class MainClass { int i; double d; boolean b; fout.write("Testing Scanner 10 12.2 one true two false"); fout.close(); Scanner src = new Scanner(fin); while (src.hasNext()) { if (src.hasNextInt()) { i = src.nextInt(); System. out. println("int: " + i ); } else if (src.hasNextDouble()) { d = src.nextDouble(); System. out. println("double: " + d ); } else if (src.hasNextBoolean()) { b = src.nextBoolean(); System. out. println("boolean: " + b ); } else { str = src.next(); System. out. println("String: " + str ); } } fin.close(); } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Error al leer un fichero de texto en Python
« 1 2 »
Scripting
|
CaronteGold
|
17
|
12,896
|
20 Diciembre 2010, 20:26 pm
por CaronteGold
|
|
|
Leer fichero csv
Programación C/C++
|
gonzalo_C
|
0
|
4,521
|
20 Febrero 2012, 17:32 pm
por gonzalo_C
|
|
|
leer fichero .txt
« 1 2 »
Programación C/C++
|
raquelsg88
|
15
|
6,790
|
3 Junio 2013, 21:50 pm
por leosansan
|
|
|
Double C# y Double SQLITE (Separadores con Punto y Coma)
.NET (C#, VB.NET, ASP)
|
MauroMasciar
|
3
|
5,115
|
10 Diciembre 2017, 17:20 pm
por Maurice_Lupin
|
|
|
Map: grabar en fichero // Map: leer desde fichero.
Programación C/C++
|
gastongaston
|
0
|
1,831
|
30 Septiembre 2018, 16:03 pm
por gastongaston
|
|