web-dev-qa-db-ja.com

10進数から2進数への変換Java

Javaを使用して、ユーザーの入力から10進数を2進数に変換しようとしています。

エラーが発生します。

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;
} } }

JavaでDecimalをBinaryに変換するにはどうすればよいですか?

28
Euridice01

binaryFormメソッドが無限再帰に巻き込まれています。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);
    }
}
11
tlehman

Integer.toBinaryString()は組み込みのメソッドであり、非常にうまく機能します。

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

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

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

ここで、n = 10進数。

35
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

使用したい人のために、ただ追加したい:

   String x=Integer.toBinaryString()

2進数の文字列を取得し、その文字列をintに変換する場合。使用する場合

  int y=Integer.parseInt(x)

numberFormatExceptionエラーが発生します。

文字列xを整数に変換するために行ったことは、最初に文字列xの各Charをforループで単一のCharに変換しました。

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

次に、各Charを個々の文字列に変換し直し、

  String u=String.valueOf(t);

次に、各文字列を整数に解析しました。

これは、01010101などのバイナリを整数形式に変換する方法を理解するのに時間がかかったためです。

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

以下は、時間の複雑さで10進数を2進数に変換します。O(n)線形時間およびJava組み込み関数なし

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
/**
 * converting decimal to binary
 *
 * @param n the number
 */
private static void toBinary(int n) {
    if (n == 0) {
        return; //end of recursion
    } else {
        toBinary(n / 2);
        System.out.print(n % 2);
    }
}

/**
 * converting decimal to binary string
 *
 * @param n the number
 * @return the binary string of n
 */
private static String toBinaryString(int n) {
    Stack<Integer> bits = new Stack<>();
    do {
        bits.Push(n % 2);
        n /= 2;
    } while (n != 0);

    StringBuilder builder = new StringBuilder();
    while (!bits.isEmpty()) {
        builder.append(bits.pop());
    }
    return builder.toString();
}

または、Integer.toString(int i, int radix)を使用できます

例:(12をバイナリに変換)

Integer.toString(12, 2)
0
shellhub

効率的というよりもむしろ単純なprogramですが、それでも仕事はします。

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

ばかげているように見えるかもしれませんが、ユーティリティ機能を試したい場合

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

直接それを行うには、何らかのユーティリティメソッドが必要です。覚えていません。

0
user3123372

ワンライナーですべての問題を解決できます!私のソリューションをプロジェクトに組み込むには、binaryform(int number)メソッドを削除し、System.out.print(binaryform(number));System.out.println(Integer.toBinaryString(number));に置き換えます。

0
Sir Jacob

Integer.ParseInt():を使用しない2進数から10進数へ

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); ;
    }

}

出力:

2進数を入力してください:

1010

バイナリ= 10 10進数= 10


Integer.parseInt():を使用した2進数から10進数へ

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));

    }

}

出力:

2進数を入力してください:

1010

結果:10

0
Sidarth
public static void converToBinary(int dec)
{
    String str = "";
    while(dec!=0)
    {
        str = str + Integer.toString(dec%2);
        dec = dec/2;
    }
    System.out.println(new StringBuffer(str).reverse().toString());
}
0
Xtrick

計算されたバイナリ形式を逆にしたい場合は、StringBufferクラスを使用して、単にreverse()メソッドを使用できます。以下に、その使用法を説明し、バイナリを計算するサンプルプログラムを示します。

パブリッククラス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();
}   

}

パブリッククラス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