web-dev-qa-db-fra.com

Conversion de décimal en Java binaire

J'essaie de convertir des nombres décimaux en nombres binaires à partir de l'entrée de l'utilisateur à l'aide de Java. 

Je reçois des erreurs.

package reversedBinary;
import Java.util.Scanner;

public class ReversedBinary {


public static void main(String[] args) {
    int number; 

    Scanner in = new Scanner(System.in);

    System.out.println("Enter a positive integer");
    number=in.nextInt();

    if (number <0)
        System.out.println("Error: Not a positive integer");
    else { 

        System.out.print("Convert to binary is:");
        System.out.print(binaryform(number));
}

}

private static Object binaryform(int number) {
    int remainder;

    if (number <=1) {
        System.out.print(number);

    }

    remainder= number %2; 
    binaryform(number >>1);
    System.out.print(remainder);

    { 
    return null;
} } }

Comment convertir des nombres décimaux en binaires en Java?

25
Euridice01

Votre méthode binaryForm est prise dans une récursion infinie, vous devez renvoyer si number <= 1:

import Java.util.Scanner;

public class ReversedBinary {

    public static void main(String[] args) {
        int number;

        Scanner in = new Scanner(System.in);

        System.out.println("Enter a positive integer");
        number = in.nextInt();

        if (number < 0) {
            System.out.println("Error: Not a positive integer");
        } else {

            System.out.print("Convert to binary is:");
            //System.out.print(binaryform(number));
            printBinaryform(number);
        }
    }

    private static void printBinaryform(int number) {
        int remainder;

        if (number <= 1) {
            System.out.print(number);
            return; // KICK OUT OF THE RECURSION
        }

        remainder = number % 2;
        printBinaryform(number >> 1);
        System.out.print(remainder);
    }
}
12
tlehman

Integer.toBinaryString() est une méthode intégrée et se débrouillera très bien.

70
Vaibhav
Integer.toString(n,8) // decimal to octal

Integer.toString(n,2) // decimal to binary

Integer.toString(n,16) //decimal to Hex

où n = nombre décimal.

32
Jesse Pinkman
/**
 * @param no
 *            : Decimal no
 * @return binary as integer array
 */
public int[] convertBinary(int no) {
    int i = 0, temp[] = new int[7];
    int binary[];
    while (no > 0) {
        temp[i++] = no % 2;
        no /= 2;
    }
    binary = new int[i];
    int k = 0;
    for (int j = i - 1; j >= 0; j--) {
        binary[k++] = temp[j];
    }

    return binary;
}
5
loknath

Je veux juste ajouter, pour ceux qui utilisent: 

   String x=Integer.toBinaryString()

pour obtenir une chaîne de nombres binaires et veut convertir cette chaîne en un int. Si tu utilises 

  int y=Integer.parseInt(x)

vous obtiendrez une erreur NumberFormatException.

Ce que j'ai fait pour convertir String x en nombres entiers a d'abord été converti pour chaque caractère de String x en un seul caractère dans une boucle for. 

  char t = (x.charAt(z));

J'ai ensuite reconverti chaque personnage en une chaîne individuelle, 

  String u=String.valueOf(t);

puis analysé chaque chaîne dans un entier. 

Id figure Id post this, car j'ai mis un certain temps à comprendre comment obtenir un binaire tel que 01010101 au format Integer.

5
Tyson
public static void main(String h[])
{
    Scanner sc=new Scanner(System.in);
    int decimal=sc.nextInt();

    String binary="";

    if(decimal<=0)
    {
        System.out.println("Please Enter more than 0");

    }
    else
    {
        while(decimal>0)
        {

            binary=(decimal%2)+binary;
            decimal=decimal/2;

        }
        System.out.println("binary is:"+binary);

    }

}
3

Ce qui suit convertit le format décimal en fichier binaire avec complexité temporelle: O(n) Temps linéaire et sans aucune fonction Java incorporée.

private static int decimalToBinary(int N) {
    StringBuilder builder = new StringBuilder();
    int base = 2;
    while (N != 0) {
        int reminder = N % base;
        builder.append(reminder);
        N = N / base;
    }

    return Integer.parseInt(builder.reverse().toString());
}
1
Sameer Shrestha

Un programme plutôt simple qu'efficace , pourtant il fait l'affaire.

        Scanner sc = new Scanner(System.in);
        System.out.println("Give me my binaries");
        int str = sc.nextInt(2);
        System.out.println(str);
0
Bence

Cela peut sembler idiot, mais si vous voulez essayer la fonction utilitaire 

System.out.println(Integer.parseInt((Integer.toString(i,2))));

il doit y avoir une méthode d'utilité pour le faire directement, je ne m'en souviens pas.

0
user3123372

Binaire en décimal sans utiliser Integer.ParseInt ():

import Java.util.Scanner;

//convert binary to decimal number in Java without using Integer.parseInt() method.

public class BinaryToDecimalWithOutParseInt {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );
        System.out.println("Enter a binary number: ");

        int  binarynum =input.nextInt();
        int binary=binarynum;

        int decimal = 0;
        int power = 0;

        while(true){

            if(binary == 0){

                break;

            } else {

                int temp = binary%10;
                decimal += temp*Math.pow(2, power);
                binary = binary/10;
                power++;

            }
        }
        System.out.println("Binary="+binarynum+" Decimal="+decimal); ;
    }

}

Sortie:

Entrez un nombre binaire: 

1010

Binaire = 1010 décimal = 10


Binaire à décimal avec Integer.parseInt ():

import Java.util.Scanner;

//convert binary to decimal number in Java using Integer.parseInt() method.
public class BinaryToDecimalWithParseInt {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );

        System.out.println("Enter a binary number: ");
        String binaryString =input.nextLine();

        System.out.println("Result: "+Integer.parseInt(binaryString,2));

    }

}

Sortie:

Entrez un nombre binaire: 

1010

Résultat: 10

0
Sidarth

Si vous souhaitez inverser la forme binaire calculée, vous pouvez utiliser la classe StringBuffer et utiliser simplement la méthode reverse (). Voici un exemple de programme qui expliquera son utilisation et calculera le binaire 

classe publique Binary {

public StringBuffer calculateBinary(int number){
    StringBuffer sBuf = new StringBuffer();
    int temp=0;
    while(number>0){
        temp = number%2;
        sBuf.append(temp);
        number = number / 2;
    }
    return sBuf.reverse();
}   

}

classe publique Main {

public static void main(String[] args) throws IOException {
    System.out.println("enter the number you want to convert");
    BufferedReader bReader = new   BufferedReader(newInputStreamReader(System.in));
    int number = Integer.parseInt(bReader.readLine());

    Binary binaryObject = new Binary();
    StringBuffer result = binaryObject.calculateBinary(number);
    System.out.println(result);
}

}

0
Sam