| 
	
		|  Autor | Tema: Error al leer double de fichero [HELP]  (Leído 3,674 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.223
								
								 
								(e ->  λ("live now")); tatuar -> λ("α");
								
								
								
								
								
								     | 
 
wtf pon mas source dog, pare ver que pasa.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. 
 
 |  
						| 
								|  |  
								|  |  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.964
								
								   | 
 
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.htm He 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 | 14,034 |  20 Diciembre 2010, 20:26 pm por CaronteGold
 |  
						|   |   | Leer fichero csv Programación C/C++
 | gonzalo_C | 0 | 4,826 |  20 Febrero 2012, 17:32 pm por gonzalo_C
 |  
						|   |   | leer fichero .txt
							« 1 2 » Programación C/C++
 | raquelsg88 | 15 | 7,737 |  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,725 |  10 Diciembre 2017, 17:20 pm por Maurice_Lupin
 |  
						|   |   | Map: grabar en fichero // Map: leer desde fichero. Programación C/C++
 | gastongaston | 0 | 2,303 |  30 Septiembre 2018, 16:03 pm por gastongaston
 |    |