Autor Tema: programa en java que convierta un numero binario en decimal  (Leído 14608 veces)

harol28

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola como están , necesito ayuda ,estoy elaborando un programa en java que convierta un numero binario en decimal usando 2 clases y usando JOptionPane,todo va bien hasta que devuelve el valor del numero convertido me devuelve como 0 .Por favor díganme en que me equivoque.

Código: [Seleccionar]
package desde0;

/**
 *
 * @author harol
 */
public class metodos {
    public int  numero,decimal;
    public String mensajeEntrada(){
        String mensaje=String.format("Ingrese el numero binario que deseé \n convertir a decimal:");
        return mensaje;
       }
    public void  convertirNumero(int numeroBin,int digito,int decimal2,int exponente){
        numero=numeroBin;
        decimal=decimal2;
        while (numero!=0){
                digito = numero % 10;
               
                decimal = decimal + digito * (int) Math.pow(2, exponente);
               
                exponente++;
               
                numero = numero / 10;
               
        }
   
    }
   
    public String mensajeSalida(){
       
        String mensaje=String.format("El numero en decimal es :%d",decimal);
        return mensaje;
    }
   
   
}
     



Código: [Seleccionar]
package desde0;


import javax.swing.JOptionPane;
/**
 *
 * @author harol
 */
public class Desde0 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)   {
        metodos met= new metodos();
        JOptionPane.showInputDialog(met.mensajeEntrada());
        JOptionPane.showMessageDialog(null,met.mensajeSalida());
        }
       
}

 
« Última modificación: 06 de Marzo 2015, 11:06 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:programa en java que convierta un numero binario en decimal
« Respuesta #1 en: 06 de Marzo 2015, 19:06 »
Hola harol

Tu código siempre da 0 porque nunca llamas al método convertirNumero(...) para dar valor a la variable/atributo 'decimal'

Te envío una clase con main para hacer esa conversión.
Código: [Seleccionar]
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class BinarioADecimal {

    public static void main(String[] args)   {
        DecimalFormat df = new DecimalFormat("#,##0"); // formato de presentacion numeros decimales
        String entrada = JOptionPane.showInputDialog("Ingrese el numero binario que desee convertir a decimal:").trim();
        int numBits = entrada.length();
        if (entrada.charAt(0) == '-') numBits--;
       
        try {
            int valorDecimal = Integer.parseInt(entrada,2); // convierte String a numero en base 2
            JOptionPane.showMessageDialog(null,"El binario \"" + binaryFormat(entrada) + "\" (" + numBits +
                " digitos).\nEs el decimal: " + df.format(valorDecimal));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null,"Entrada recibida: \"" + entrada + "\" (" + entrada.length() + " caracteres)\n" +
                "Formato de número erróneo.\n" +
                "Solo se aceptan unos y ceros, sin espacios.\n" +
                "Se acepta un signo menos (-) solo a la izquierda.\n" +
                "El mayor binario para convertir en Integer es: 1111.1111.1111.1111.1111.1111.1111.1111 (31 bits)");
        }
    }

    private static String binaryFormat(String cad) { // formatea la presentacion del numero binario
        String salida = "";
        int cuarteto = 0;
        for (int i = cad.length()-1; i >=0 ; i--) {
            if (cuarteto++ % 4 == 0 && !salida.isEmpty()) {
                if(i == 0 && cad.charAt(0) == '-')  {  // nada
                } else { salida = "." + salida;}
            }
            salida = cad.charAt(i) + salida ;
        }
        return  salida;
    }
}

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".