Hola.
En Java, no se puede hacer la opción de "pulse CUALQUIER tecla para continuar" ( y si alguien sabe hacerlo soy todo oídos)
La entrada de la consola Java es una "entrada almacenada en búfer", es decir, se va capturando lo que se teclea, pero la entrada no se da por finalizada hasta que no se pulsa la tecla ENTER.
Por tanto, Sí podemos dar la opción de detener el programa e indicar "pulse ENTER para continuar".
Pero no CUALQUIER tecla.
He visto alguna solución compleja a esto, como hacer una petición a Windows para que active la consola de comandos y sea él quien espere una pulsación de tecla, con lo cuál ya estaríamos escribiendo un código que no funcionaría bajo otros sistemas como Linux y que podría tener un comportamiento inesperado si lo estamos ejecutando desde un IDE como NetBeans, Eclipse o similar.
No vale la pena complicarse tanto para algo así.
Así que lo que sí podemos hacer es detener la ejecución del programa hasta que el usuario pulse ENTER.
Y esto lo hacemos simplemente usando el objeto Scanner para que el usuario haga una entrada de datos.
Esto implica que el usuario podrá teclear letras y números y se verá en pantalla lo que teclea. Esto es inevitable.
Pero bueno, nosotros lo que haremos será indicar en pantalla que lo que el usuario debe hacer es pulsar ENTER para continuar.
Si es rebelde y le da por teclear, pues ya es problema suyo.
Como en tu programa estás leyendo datos numéricos, con nextInt() y nextDouble(), previamente habrá que "limpiar" el buffer de entrada porque estos métodos dejan como residuo el carácter especial que representa a la tecla ENTER.
Y esto hace que cuando queramos hacer la pausa del programa, esta no se haga porque esos residuos hacen creer a Java que el usuario ya ha pulsado ENTER para continuar, cuando en realidad no ha tenido ocasión de hacerlo.
Esta pausa la haríamos después de los if que analizan la opción introducida por el usuario.
Por cierto, te he corregido los IF , pues la opción 4 que se supone es para terminar el programa la habías asignado a calcular el área del cuadrado.
Además he ampliado los IF, uno para informar al usuario de que se va a poner fin al programa cuando se pulsa 4, que siempre queda más informativo.
Y otro para cuando el usuario por error o lo que sea introduce una opción que no existe en el menú. En este caso también es inconveniente dar un mensaje en pantalla.
Para la pausa, usaremos el método nextLine() de la clase Scanner. Tanto para limpiar el buffer (capturar los residuos que hayan dejado nextInt() y nextDouble()) como para esperar a que se pulse ENTER.
Este método es el único que acepta una entrada de "datos vacía"
Podríamos limpiar con nextLine() y luego pausar con nextInt() por ejemplo. Pero nextInt() no aceptará que pulsemos ENTER sin más. Nos exigirá teclear un número antes de pulsar ENTER.
Por eso mejor usar nextLine().
Aquí te dejo el código. Pruébalo y pregunta lo que no entiendas.
Un saludo.
public static void main(String[] args) {
Scanner neme = new Scanner(System.in);
int opcion;
do {
System.out.println("Seleccione una de las opciones:");
System.out.println("1.-Calcular el area de un triangulo\n2.-Calcular el area de un rectangulo\n3.-Calcular el area de un cuadrado\n4.-Salir");
opcion = neme.nextInt();
double base=0.0,altura=0.0,area=0.0,baserec=0.0,alturarec=0.0,arearec=0.0,basecua=0.0,alturacua=0.0,areacua=0.0;
if(opcion==1) {
System.out.println("Ingrese la base del triangulo");
base = neme.nextDouble();
System.out.println("Introduce la altura del triangulo");
altura = neme.nextDouble();
area=(base*altura)/2;
System.out.println("El area del triangulo de base = " + base + " y altura = " + altura + ", es de " + area + " m2 ");
}
else if(opcion==2) {
System.out.println("Introduce la base del rectangulo");
baserec=neme.nextDouble();
System.out.println("Introduce la altura del rectangulo");
alturarec=neme.nextDouble();
arearec=baserec*alturarec;
System.out.println("El area del rectangulo de base = " + baserec + " y altura = " + alturarec + ", es de " + arearec + " m2 ");
}
else if(opcion==3) {
System.out.println("Introdusca la bace del cuadrado");
basecua=neme.nextDouble();
System.out.println("Introdusca la altura del cuadrado");
alturacua=neme.nextDouble();
areacua=basecua*alturacua;
System.out.println("El area del cuadrado de base = " + basecua + "y altura = " + alturacua + ", es de " + areacua + " m2 ");
} else if (opcion == 4) {
System.out.println("\nFIN DE PROGRAMA");
} else { //Por si se introduce un valor que no es una opción de menú
System.out.println("Opcion invalida");
}
//Para pausar la ejecución del programa
neme.nextLine(); //Limpiamos buffer del System.in
System.out.println("\n\t\tPRESIONE ENTER PARA CONTINUAR..."); //Mensaje en pantalla
neme.nextLine(); //Ahora el programa se detiene hasta que se pulse ENTER
}while(opcion != 4);
}