TransWikia.com

¿Programa de java de conversion decimal a binario utilizando arrays?

Stack Overflow en español Asked by Ilce Gomez on August 26, 2021

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package decimalabinario;

import java.util.Scanner;

public class Decimalabinario {

    public static void main(String[] args) {

        Scanner teclado=new Scanner(System.in);

        Scanner lecturaDatos = new Scanner(System.in);
        System.out.println("Ingresa un numero decimal");

        long numerodecimal =lecturaDatos.nextLong();
        long auxiliar = numerodecimal;
        String binario="";

        for(int i=0; i<auxiliar; i-- )

        while (auxiliar >0){
            binario = auxiliar %2 + binario;
            auxiliar /=2;
        }
        System.out.println("El numero decimal "+numerodecimal+" en binario es: "+binario);  
    }    
}

2 Answers

No sé por qué tienes dos veces la entrada por teclado, hay una que no utilizas:

Scanner teclado=new Scanner(System.in);

Intentando no modificar mucho la base de tu código, creo que algo así te funcionaría:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package decimalabinario;

import java.util.Scanner;

public class Decimalabinario {

    public static void main(String[] args) {

        Scanner lecturaDatos = new Scanner(System.in);
        System.out.println("Ingresa un numero decimal");

        long numerodecimal =lecturaDatos.nextLong();

        long [] almacen = new long [50];   
        long auxiliar = numerodecimal;
        String binario = "";
        int contador = 0;

        while (auxiliar > 0) {
            almacen[contador] = auxiliar % 2; // Rellenar el almacén con cada valor posicional del número binario
            auxiliar/=2;
            contador++;
        }

        for (contador = contador - 1;contador>=0;contador--){
            binario = binario + almacen[contador]; // Unimos valores del almacén
        }

        System.out.println("El numero decimal "+numerodecimal+" en binario es: "+binario);       
    }   
}

Answered by smt on August 26, 2021

Se podria obtener la longitud del binario con el logaritmo base 2 del número para obtener la longitud exacta del array, ya lo demas seria sacar el modulo del número e ir reduciendo el número dividiendolo entre 2 y así seguir haciendo esto hasta que el número sea igual a cero.

long numerodecimal =lecturaDatos.nextLong();
long auxiliar = numerodecimal;
int length = 0;
// En esta parte se calcula la longitud del binario a obtener
length = (int) Math.floor(Math.log(numerodecimal) / Math.log(2)) + 1;

String [] binario= new String[length];

while (auxiliar >0){
    binario[length - 1] = Long.toString(auxiliar %2);
    auxiliar /=2;
    length--;
}

Answered by ferch5003 on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP