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();
}
}
}