Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: harol28 en 06 de Marzo 2015, 07:51
-
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.
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;
}
}
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());
}
}
-
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.
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