Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con System.in

Estas en el tema de Problemas con System.in en el foro de Java en Foros del Web. Hola Estoy haciendo una pequeña aplicacion que tiene que leer por teclado unos parametros.No se les introduce como parametros al llamar a la aplicaicon,sino a ...
  #1 (permalink)  
Antiguo 02/12/2007, 06:27
 
Fecha de Ingreso: junio-2005
Mensajes: 131
Antigüedad: 18 años, 10 meses
Puntos: 0
Problemas con System.in

Hola

Estoy haciendo una pequeña aplicacion que tiene que leer por teclado unos parametros.No se les introduce como parametros al llamar a la aplicaicon,sino a base de preguntas/respuestas al usuario.El porblema que tengo es que no soy capaz de leer nada en la 2º pregunta,me pone un valor predeterminado y sigue con el programa sin dejar introducir otro valor

Código:
 System.out.print("Introduzca la divisa a convertir (Y/D/E):");
        char divisaOrigen=(char)System.in.read();
        System.out.println(divisaOrigen);
//Hasta aqui bien
 System.out.print("Introduzca la cantidad a convertir:");
        	 System.out.println((double)System.in.read());
/Aqui falla,devuelve 13.0 y sale
Que estoy haciendo mal?Hay alguna forma de limpiar la corriente del teclado para que vuelva a empezar de 0,sin ningun valor en memoria?

Saludos
  #2 (permalink)  
Antiguo 02/12/2007, 06:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Problemas con System.in

En la primera lectura metes el carácter y luego \r, eso no se libera, por lo tanto, cuando haces la segunda lectura, directamente ese valor pasa a ser \r, retorno de carro. O sea: si lo imprimes, no es que no funcione, y si lo capturas, pero con el valor \r.

saludos.
  #3 (permalink)  
Antiguo 02/12/2007, 07:00
 
Fecha de Ingreso: junio-2005
Mensajes: 131
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Problemas con System.in

Cita:
Iniciado por Ethiel Ver Mensaje
En la primera lectura metes el carácter y luego \r, eso no se libera, por lo tanto, cuando haces la segunda lectura, directamente ese valor pasa a ser \r, retorno de carro. O sea: si lo imprimes, no es que no funcione, y si lo capturas, pero con el valor \r.

saludos.
Muchas gracias,me imaginaba algo asi.Entonces como puedo liberar la lectura para que no me coga el /r de la 1º lectura?

Saludos
  #4 (permalink)  
Antiguo 02/12/2007, 07:17
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Problemas con System.in

public class Algoritmos {

public Algoritmos()
{
try
{
String inputLine;
BufferedReader keyboard;
keyboard = new BufferedReader(new InputStreamReader(System.in));
// asocia la entrada al teclado
inputLine = keyboard.readLine();
// lee la linea
System.out.print(inputLine);
System.out.println("s");

BufferedReader key;
key = new BufferedReader(new InputStreamReader(System.in));
// asocia la entrada al teclado
inputLine = key.readLine();
// lee la linea
System.out.print(inputLine);
System.out.println("s");
}
catch (IOException eioe)
{

}

}

public static void main (String args[])
{
new Algoritmos();
}
}

Este programita lo hace. Tendrías que crear un inputStream.

Saludos.
  #5 (permalink)  
Antiguo 02/12/2007, 07:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Problemas con System.in

Por si no ha quedado claro, lo pongo aquí, arreglado el tuyo.

import java.util.*;
import java.io.*;
public class Algoritmos {

public Algoritmos()
{
try
{
byte []b=new byte[0];
System.out.println("Introduzca la divisa a convertir (Y/D/E):");
InputStream p=System.in;
char divisaOrigen=(char)p.read();

System.out.println(divisaOrigen+"\r"+"perdro");

System.out.print("Introduzca la cantidad a convertir:");
p.skip(2);
char pepe= (char)p.read();
System.out.println(pepe);


}
catch (IOException eioe)
{
System.out.println("eeo22222");
}
}

public static void main (String args[])
{
new Algoritmos();
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.