Hola!
Soy nuevo en java y en programacion orientada a objetos, pero recientemente tenia que hacer un programita que resolvia unas ecuaciones sencillas.
El programa se componia de un menu, del cual muestro las opciones mediante un println y un switch dirije a cada seccion (que hace una ecuacion distinta), de este modo:
Que quieras hacer?
Resolver ecuacion: 1
resolver ecuacion: 2
El usuario pulsa 1 y se dirije a la ecuacion una, y el programa la resuelve bien, pero qiero añadir que al final de la opcion de volver al menu principal, resolver la misma ecuacion (con otros datos, claro) y por ultimo, salir.
Me imagino que tengo que hacerlo con una if, pero no se como. A ver si alguien me indica como (o me da pistas, tampoco busco que programe por mi :) )
Un saludo y gracias de antemano
Codigo:
Código java:
Ver originalimport java.util.Scanner;
public class MrSnell2 {
public static void main
(String[] args
) {
int snellius = 0;
System.
out.
println("Calculadora Snellius\n\n\n"); do {
System.
out.
println("Elije una opcion:\n"); System.
out.
println("1: Calcular Angulo de incidencia"); System.
out.
println("2: Calcular Angulo de refraccion"); System.
out.
println("3: Indice de refraccion del primer medio"); System.
out.
println("4: Indice de refraccion del segundo medio"); System.
out.
println("5: Angulo limite y reflexion total"); System.
out.
println("6: Refraccion en un medio de caras planoparalelas"); System.
out.
println("7: Velocidad C segun el indice de refraccion"); System.
out.
println("8: Acerca de la Calculadora Snellius"); System.
out.
println("9: Ayuda"); //ANEXOS
System.
out.
println("10: La Ley de Snell"); System.
out.
println("11: Indice de refraccion"); System.
out.
println("0: Salir"); //leemos el dato introducido por el usuario
Scanner reader
= new Scanner
(System.
in); snellius = reader.nextInt();
//segun el numero, empieza el switch
switch (snellius) {
//1: Calculo de angulo de incidencia
case 1:
//Creamos las variables
double n1a = 0; //Indice refraccion primer medio
double n2a = 0; //Indice refraccion segundo medio
double angRefractadoA = 0; //Angulo de refraccion
//Obtenemos los datos
System.
out.
println("Angulo de incidencia de un haz luminico sobre un medio."); System.
out.
println("Indice de refracion del primer medio:"); n1a = reader.nextDouble();
System.
out.
println("Indice de refraccion del segundo medio:"); n2a = reader.nextDouble();
System.
out.
println("Angulo refractado"); angRefractadoA = reader.nextDouble();
//empezamos a procesar y despejar
double senAngRefractadoA
= Math.
sin(Math.
toRadians(angRefractadoA
)); double segundaparteA = n2a * senAngRefractadoA;
double resultadoA
= Math.
toDegrees(segundaparteA
); double rA = resultadoA / n1a;
//Resultado
System.
out.
println("El angulo de incidencia es de: " + rA
+ "º"); break;
//2: Calculo de angulo refractado
case 2:
//Creamos las variables
double n1b = 0; //indice refraccion primer medio
double n2b = 0; // indice refraccio segundo medio
double angIncidenteB = 0; //angulo de incidencia
//Obtenemos los datos
System.
out.
println("Angulo de refraccion de un haz luminico al atravesar un medio."); System.
out.
println("Indice de refracion del primer medio:"); n1b = reader.nextDouble();
System.
out.
println("Indice de refraccion del segundo medio:"); n2b = reader.nextDouble();
System.
out.
println("Angulo de incidencia"); angIncidenteB = reader.nextDouble();
//Empezamos a procesar y despejar
double senAngIncidenteB
= Math.
sin(Math.
toRadians(angIncidenteB
)); double primeraparteB = senAngIncidenteB * n1b;
double rB = primeraparteB / n2b;
double resultadoB
= Math.
toDegrees(rB
); //resultado
System.
out.
println("El angulo de refraccion es de: " + resultadoB
+ "º"); break;
//3: Indice de refraccion del primer medio
case 3:
double angIncidenteC = 0;
double n2c = 0;
double angRefractadoC = 0;
//Obtenemos los datos:
System.
out.
println("Calculo del indice de refraccion del primer medio"); System.
out.
println("Angulo de incidencia del haz luminico:"); angIncidenteC = reader.nextDouble();
System.
out.
println("Indice de refraccion del segundo medio:"); n2c = reader.nextDouble();
System.
out.
println("Angulo refractado"); angRefractadoC = reader.nextDouble();
double senAngRefractadoC
= Math.
sin(Math.
toRadians(angRefractadoC
)); //Procesamos y despejamos
double segundaparteC = n2c * senAngRefractadoC;
double resultadoC
= Math.
toDegrees(segundaparteC
); double rC = resultadoC / angIncidenteC;
System.
out.
print("Indice de refraccion del primer medio: " + rC
); break;
//4: Indice de refraccion del segundo medio
case 4:
double angIncidenteD = 0;
double n1d = 0;
double angRefractadoD = 0;
//Obtenemos los datos
System.
out.
println("Calculo del indice de refraccion del segundo medio"); System.
out.
println("Indice de refraccion del primer medio:"); n1d = reader.nextDouble();
System.
out.
println("Angulo de incidencia del haz luminico"); angIncidenteD = reader.nextDouble();
System.
out.
println("Angulo de refraccion del haz luminico"); angRefractadoD = reader.nextDouble();
//procesamos y despejamos
double primeraparteD = n1d * angIncidenteD;
double rD = primeraparteD / angRefractadoD;
System.
out.
println("Indice de refraccion del segundo medio: " + rD
);
//5: Angulo limite y reflexion total
break;
case 5:
System.
out.
println("Reflexion total y angulo limite"); double n1e = 0;
double n2e = 0;
//angulo limite (90)
double angulolimite
= Math.
sin(Math.
toRadians(90)); System.
out.
println("Introduce el indice de refraccion del primer medio:"); n1e = reader.nextDouble();
System.
out.
println("Introduce el indice de refraccion del material:"); n2e = reader.nextDouble();
//parte derecha de la ecuacion: n1 * sen90
double segundaparteE = n2e * angulolimite;
// parte izquierda de la ecuacion n1* senIx y despejamos
double rE = n1e / segundaparteE;
//resultado
double resultadoE
= Math.
toDegrees(rE
); System.
out.
println("El angulo limite es de: " + resultadoE
+ "º" + "\nA partir de esa inclinacion se produce reflexion total."); break;
}
}while(snellius != 0);
}
}