-
-
Save sanrodari/2816048 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package trabajo; | |
import javax.swing.JOptionPane; | |
/** | |
* Clase principal del proyecto. | |
*/ | |
public class Proyecto { | |
/** | |
* Metodo inicial. | |
*/ | |
public static void main(String[] args) { | |
int operacion = Integer.parseInt(JOptionPane.showInputDialog("Ingrese una opcion \n" | |
+ "1-Conversion \n" | |
+ "2-Suma \n" | |
+ "3-Resta \n" | |
+ "4-Multiplicacion")); | |
menuInicio(operacion); | |
} | |
/** | |
* Metodo para sumar resta o multiplicar. | |
* @param operacion Codigo es de la opreacion | |
*/ | |
public static void menuInicio(int operacion) { | |
if (operacion >= 1 && operacion <= 4) { | |
switch (operacion) { | |
// Conversion | |
case 1: | |
int baseOrigen = menuBase(-1); | |
String numeroIngresado = ingresarNumero(); | |
if(!validarNumeroBase(numeroIngresado, baseOrigen)){ | |
JOptionPane.showMessageDialog(null, "El numero no es válido para la base dada.", | |
"Error!", JOptionPane.ERROR_MESSAGE); | |
} | |
else{ | |
int baseDestino = menuBase(baseOrigen); | |
System.out.println(convertirNumeroBase(baseOrigen, baseDestino, numeroIngresado)); | |
} | |
break; | |
// Suma | |
case 2: | |
int baseOperacion = menuBase(-1); | |
String[] datosOperacion = ingresarDatosOperacion(); | |
System.out.println(sumar(datosOperacion[0], datosOperacion[1], baseOperacion)); | |
break; | |
// Resta | |
case 3: | |
break; | |
// Multiplicacion | |
case 4: | |
break; | |
} | |
} | |
else { | |
JOptionPane.showMessageDialog(null, "Rango Invalido", | |
"Error!", JOptionPane.ERROR_MESSAGE); | |
} | |
} | |
private static boolean validarNumeroBase(String numeroIngresado, int baseOrigen) { | |
boolean esValido = true; | |
switch (baseOrigen) { | |
// Binario | |
case 1: | |
esValido = validarBinario(numeroIngresado); | |
break; | |
// Octal | |
case 2: | |
break; | |
// Decimal | |
case 3: | |
break; | |
// Hexadecimal | |
case 4: | |
break; | |
} | |
return esValido; | |
} | |
private static boolean validarBinario(String numeroIngresado) { | |
return true; | |
} | |
private static String sumar(String primerOperando, String segundoOperando, int baseOperacion) { | |
String retorno = ""; | |
switch (baseOperacion) { | |
// Binario | |
case 1: | |
retorno = sumarBinarios(primerOperando, segundoOperando); | |
break; | |
// Octal | |
case 2: | |
break; | |
// Decimal | |
case 3: | |
break; | |
// Hexadecimal | |
case 4: | |
break; | |
} | |
return retorno; | |
} | |
private static String sumarBinarios(String primerOperando, | |
String segundoOperando) { | |
int primerBinario = Integer.parseInt(primerOperando, 2); | |
int segundoBinario = Integer.parseInt(segundoOperando, 2); | |
int resultado = primerBinario + segundoBinario; | |
return Integer.toBinaryString(resultado); | |
} | |
public static String[] ingresarDatosOperacion(){ | |
String primerDato = JOptionPane.showInputDialog("A"); | |
String segundoDato = JOptionPane.showInputDialog("B"); | |
return new String[]{primerDato, segundoDato}; | |
} | |
/** | |
* Metodo que convierte un numero de una base a otra. | |
* @param baseOrigen Base en la que esta escrito el numero que se desea convertir. | |
* @param baseDestino Base a la que se desea convertir el metodo. | |
* @param numeroIngresado Numero que se desea convertir. | |
* @return El numero convertido a la base destino. | |
*/ | |
public static String convertirNumeroBase(int baseOrigen, int baseDestino, | |
String numeroIngresado) { | |
String retorno = ""; | |
switch (baseOrigen) { | |
// Binario | |
case 1: | |
switch (baseDestino) { | |
// Octal | |
case 2: | |
retorno = convertirBinarioAOctal(numeroIngresado); | |
break; | |
// Decimal | |
case 3: | |
break; | |
// Hexadecimal | |
case 4: | |
break; | |
} | |
break; | |
// Octal | |
case 2: | |
break; | |
// Decimal | |
case 3: | |
break; | |
// Hexadecimal | |
case 4: | |
break; | |
} | |
System.out.println("baseOrigen " + baseOrigen + " baseDestino " + baseDestino + " numeroIngresado " + numeroIngresado); | |
return retorno; | |
} | |
/** | |
* Pasa un numero de binario a octal. | |
* @param numeroIngresado Numero a convertir | |
* @return Numero convertido. | |
*/ | |
public static String convertirBinarioAOctal(String numeroIngresado) { | |
int numeroBinario = Integer.parseInt(numeroIngresado, 2); | |
return Integer.toOctalString(numeroBinario); | |
} | |
/** | |
* Menu para seleccionar base en la operación de conversión. | |
* @param seleccionado Numero seleccionado anteriormente, si se le pasa un -1 se | |
* mostre todas las opciones. | |
* | |
* @return La base seleccionada por el usuario. | |
*/ | |
public static int menuBase(int seleccionado){ | |
int baseSeleccionada = -1; | |
if(seleccionado == -1){ | |
// 1 binario, 2 octal, 3 decimal, 4 hexadecimal. | |
baseSeleccionada = Integer.parseInt( | |
JOptionPane.showInputDialog("Ingrese una opcion \n" | |
+ "1 - Binario \n" | |
+ "2 - Octal \n" | |
+ "3 - Decimal \n" | |
+ "4 - Hexadecimal")); | |
} | |
else{ | |
String opcionBinario = "1 - Binario \n"; | |
String opcionOctal = "2 - Octal \n"; | |
String opcionDecimal = "3 - Decimal \n"; | |
String opcionHexadecimal = "4 - Hexadecimal"; | |
String opcionesSeleccionables = ""; | |
if(seleccionado != 1) opcionesSeleccionables += opcionBinario; | |
if(seleccionado != 2) opcionesSeleccionables += opcionOctal; | |
if(seleccionado != 3) opcionesSeleccionables += opcionDecimal; | |
if(seleccionado != 4) opcionesSeleccionables += opcionHexadecimal; | |
baseSeleccionada = Integer.parseInt(JOptionPane.showInputDialog("Ingrese una opcion \n" | |
+ opcionesSeleccionables)); | |
} | |
if(baseSeleccionada <= 0 || baseSeleccionada > 4){ | |
JOptionPane.showMessageDialog(null, "Rango Invalido", | |
"Error!", JOptionPane.ERROR_MESSAGE); | |
} | |
return baseSeleccionada; | |
} | |
public static String ingresarNumero(){ | |
return JOptionPane.showInputDialog("Ingrese el numero en la base origen"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment