lunes, 28 de enero de 2008

CONVERSIONES EN JAVA

Este código te sirve para transformar un número de sistema decimal a cualquier base. Ha sido desarrollado en un visualizador de JAVA llamado NETBEANS.









package CONVERSION;
import javax.swing.JOptionPane;
import java.lang.*;
public class Main {
static String numO="",numD="",pos="",conversion="";
static int sistO,sistD;
public static void main(String[] args) {
int opcion;
opcion=menu();
switch(opcion){
case 1: leer();
desde_base_decimal();break;
case 2: leer();
a_base_decimal();break;
case 3: leer();
a_base_decimal();
desde_base_decimal();
}
}

public static void leer(){
sistO=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de la base del sistema origen"));
sistD=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero de la base del sistema destino"));
numO=JOptionPane.showInputDialog("Ingrese el numero a transformar");
}

public static int menu(){
int opcion;
opcion=Integer.parseInt(JOptionPane.showInputDialog("OPCIONES PARA CONVERTIR ENTRE SISTEMAS DE NUMERACION\n"+
"1. PARA CONVERTIR DESDE DECIMAL A CUALQUIER BASE\n"+
"2. PARA CONVERTIR DESDE CUALQUIER BASE A DECIMAL\n"+
"3. PARACONVERTIR DESDE CUALQUIER BASE A CUALQUEIR BASE\n"+
"0. SALIR\n\n"+
"Escoja su opción: "));
return opcion;
}

public static void desde_base_decimal() {
numD="";
while(Integer.parseInt(numO)>=sistD){
pos=String.valueOf(Integer.parseInt(numO)%sistD);
numeros_a_letras();
numO=String.valueOf((int)Integer.parseInt(numO)/sistD);
numD+=pos;
}
pos=numO;
numeros_a_letras();
numD+=pos;
invertir_cadena();
}

public static String numeros_a_letras(){
if ((sistD>10)&(Integer.parseInt(numO)>10)){
int opcion=Integer.parseInt(pos);
switch(opcion){
case 10: pos="A";break;
case 11: pos="B";break;
case 12: pos="C";break;
case 13: pos="D";break;
case 14: pos="E";break;
case 15: pos="F";break;
}
}
return pos;
}

public static void invertir_cadena(){ //INVERTIR CADENA
for(int i=numD.length();i>0;i--){
conversion+=numD.substring((i-1),i);
}
JOptionPane.showMessageDialog(null,"Transformacion: \n"+"Es igual a: "+ conversion+" en base "+sistD);
}

public static void a_base_decimal(){
int cont=0, mult,numD2=0;
for(int i=numO.length();i>0;i--){
pos=numO.substring((i-1),i);
letras_a_numeros();
mult=(int)(Double.parseDouble(pos)*Math.pow(sistO,cont));
numD2+=mult;
cont++;
}
JOptionPane.showMessageDialog(null,"Transformacion: \n"+"Es igual a: "+numD2+" en base"+sistD);
sistO=10;
numD=String.valueOf(numD2);
numO=numD;
}

public static String letras_a_numeros(){
switch(pos.charAt(0)){
case 'A':pos="10";break;
case 'B':pos="11";break;
case 'C':pos="12";break;
case 'D':pos="13";break;
case 'E':pos="14";break;
case 'F':pos="15";break;
}
return pos;
}
}

1 comentario:

jlgranda dijo...

Interesante código, felicitaciones