Limpiar buffer en Java

Amazon

No sé si se escribe así, pero explico lo que estoy intentando hacer xD.

Tengo un código de una calculadora sencilla (metes 2 números, elijes una opción y los suma, resta, divide o multiplica) y ahora intento hacer que ejecute todo el programa de nuevo al decirle 's' o 'S'. Hasta ahí bien, me "reinicia" el programa (con un do-while), pero al llegar arriba, se ve que sigue cogiendo los valores que metí en 'rep' para que subiera de nuevo y "explota".

Lo que busco es un fflush pero para Java

Adjunto el código xd (actualmente me funciona porque le metí un parche que no me gusta (String a = n.readLine();)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class calc1 {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    
    System.out.print("Hola mundo\n");
    try {
        float n1, n2;
        BufferedReader n = new BufferedReader(new InputStreamReader(System.in));;
        int opcion;
        char rep;
        do {
            System.out.print("Introduce el primer número\n");
            n1=Float.valueOf(n.readLine());
            System.out.print("Introduce el segundo número\n");
            n2=Float.valueOf(n.readLine());
            System.out.print("¿Que desea hacer?\n");
            System.out.print("1.- Sumar los numeros\n");
            System.out.print("2.- Restar los numeros\n");
            System.out.print("3.- Multiplicar los numeros\n");
            System.out.print("4.- Dividir los numeros\n");
            opcion=0;
            do {    
                opcion=Integer.valueOf(n.readLine());
            } while (opcion < 1 || opcion > 4);
            switch(opcion) {
            case 1:
                System.out.print("La suma es " + (n1 + n2));
                break;
            case 2:
                System.out.print("La resta es " + (n1 - n2));
                break;
            case 3:
                System.out.print("La multiplicacion es " + (n1 * n2));
                break;
            case 4:
                System.out.print("La division es " + (n1 / n2));
                break;
            }    
            do {
                System.out.print("\n¿Desea introducir otros dos numeros?\n");
                rep=(char)System.in.read();
                String a = n.readLine();
            } while (rep != 's' && rep != 'S' && rep != 'n' && rep != 'N');
        } while (rep == 'S' || rep == 's');
        System.out.print("Saliendo de la aplicacion.");
    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}
NeB1

System.in.skip(System.in.available());

1 1 respuesta
Amazon

#2 <3 you

Vote for NeB1 for moderador xDD

1 respuesta
NeB1

#3 xDDD piradoIV es mucho pirado

PiradoIV

ya será menos, aupa NeB1 xD

Usuarios habituales

  • PiradoIV
  • NeB1
  • Amazon