Skip to content

Instantly share code, notes, and snippets.

@sanrodari
Forked from godie007/trabajoFinal.java
Created May 27, 2012 21:55
Show Gist options
  • Save sanrodari/2816048 to your computer and use it in GitHub Desktop.
Save sanrodari/2816048 to your computer and use it in GitHub Desktop.
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