33

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に変換するにはどうすればよいですか?

4

28 に答える 28

85

Integer.toBinaryString()組み込みの方法であり、非常にうまく機能します。

于 2013-06-24T20:57:14.907 に答える
14

メソッド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);
    }
}
于 2013-02-09T03:39:07.197 に答える
6

使用する人のために、追加したいだけです:

   String x=Integer.toBinaryString()

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

  int y=Integer.parseInt(x)

NumberFormatException エラーが発生します。

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

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

次に、各 Char を個別の String に変換し直しました。

  String u=String.valueOf(t);

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

01010101 などのバイナリを整数形式にする方法を理解するのに時間がかかったので、これを投稿します。

于 2014-09-17T00:34:32.183 に答える
4
/**
 * @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;
}
于 2014-05-07T12:34:49.773 に答える
3
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);

    }

}
于 2017-06-20T13:51:25.480 に答える
0

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

2 進数 = 1010 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

于 2016-05-25T11:30:54.653 に答える
0

ばかげているように思えるかもしれませんが、ユーティリティ関数を試してみたい場合は

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

それを直接行うためのユーティリティメソッドが必要です。覚えていません。

于 2013-12-20T16:13:45.343 に答える
0

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

public class 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();
    }
}


public class 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);
    }
}
于 2013-07-09T10:02:07.010 に答える
0
public static void main(String[] args)
{
    Scanner in =new Scanner(System.in);
    System.out.print("Put a number : ");
    int a=in.nextInt();
    StringBuffer b=new StringBuffer();
    while(a>=1)
    {
      if(a%2!=0)
      {
        b.append(1);
       }
      else if(a%2==0)
      {
         b.append(0);
      }
      a /=2;
    }
    System.out.println(b.reverse());
}
于 2015-03-19T00:17:16.297 に答える
0
public static String convertToBinary(int dec)
{
    String str = "";
    while(dec!=0)
    {
        str += Integer.toString(dec%2);
        dec /= 2;
    }
    return new StringBuffer(str).reverse().toString();
}
于 2019-03-25T08:48:19.720 に答える
0

実際には、再帰関数として記述できます。各関数呼び出しは結果を返し、前の結果の末尾に追加します。以下に示すように、java を使用してこのメ​​ソッドを簡単に記述することができます。

public class Solution {

    private static String convertDecimalToBinary(int n) {
        String output = "";
        if (n >= 1) {
            output = convertDecimalToBinary(n >> 1) + (n % 2);
        }

        return output;
    }

    public static void main(String[] args) {
        int num = 125;
        String binaryStr = convertDecimalToBinary(num);

        System.out.println(binaryStr);
    }

}

上記の再帰がどのように機能するかを見てみましょう。

ここに画像の説明を入力

convertDecimalToBinary メソッドを 1 回呼び出した後、数値の値が 1 未満になるまで自分自身を呼び出し、最初に呼び出した場所にすべての連結結果を返します。

参考文献:

Java - ビット単位およびビット シフト演算子https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

于 2021-01-22T12:27:56.297 に答える
-1

これは非常に基本的な手順です。一般的な手順を紙に書いた後、これを取得しました。

import java.util.Scanner;

    public class DecimalToBinary {

        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("Enter a Number:");
            int number = input.nextInt();
            while(number!=0)
            {
                if(number%2==0) 
                {
                    number/=2;
                    System.out.print(0);//Example: 10/2 = 5     -> 0
                }
                else if(number%2==1) 
                {
                    number/=2;
                    System.out.print(1);// 5/2 = 2              -> 1
                }
                else if(number==2)
                {
                    number/=2;
                    System.out.print(01);// 2/2 = 0             -> 01   ->0101
                }
            }
        }
    }
于 2015-08-15T13:10:37.120 に答える
-1
//converts decimal to binary string
String convertToBinary(int decimalNumber){  
    String binary="";
    while(decimalNumber>0){
        int remainder=decimalNumber%2;
        //line below ensures the remainders are reversed
        binary=remainder+binary;
        decimalNumber=decimalNumber/2;
    }
    return binary;

}
于 2016-06-01T00:00:10.633 に答える
-1
import java.util.*;

public class BinaryNumber 
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the number");
        int n = scan.nextInt();
        int rem;
        int num =n; 
        String str="";
        while(num>0)
        {
            rem = num%2;
            str = rem + str;
            num=num/2;
        }
        System.out.println("the bunary number for "+n+" is : "+str);
    }
}
于 2015-07-14T14:04:08.920 に答える
-1

作成中の 10 進文字列の前に insert() を使用し、reverse() を呼び出さずに StringBuilder を使用するとさらに効果的です。

static String toBinary(int n) {
    if (n == 0) {
        return "0";
    }

    StringBuilder bldr = new StringBuilder();
    while (n > 0) {
        bldr = bldr.insert(0, n % 2);
        n = n / 2;
    }

    return bldr.toString();
}
于 2017-11-02T22:54:02.527 に答える
-2
    int n = 13;
    String binary = "";

    //decimal to binary
    while (n > 0) {
        int d = n & 1;
        binary = d + binary;
        n = n >> 1;
    }
    System.out.println(binary);

    //binary to decimal
    int power = 1;
    n = 0;
    for (int i = binary.length() - 1; i >= 0; i--) {
        n = n + Character.getNumericValue(binary.charAt(i)) * power;
        power = power * 2;
    }

    System.out.println(n);
于 2016-08-27T22:18:11.600 に答える
-2

これは、10 進数から 2 進数への 3 つの異なる方法での変換です。

import java.util.Scanner;
public static Scanner scan = new Scanner(System.in);

    public static void conversionLogical(int ip){           ////////////My Method One 
        String str="";
        do{
            str=ip%2+str;
            ip=ip/2;

        }while(ip!=1);
        System.out.print(1+str);

    }
    public static void byMethod(int ip){                /////////////Online Method
        //Integer ii=new Integer(ip);
        System.out.print(Integer.toBinaryString(ip));
    }
    public static String recursion(int ip){             ////////////Using My Recursion

        if(ip==1)
            return "1";
        return (DecToBin.recursion(ip/2)+(ip%2));


    }

    public static void main(String[] args) {            ///Main Method

        int ip;         
        System.out.println("Enter Positive Integer");
        ip = scan.nextInt();

        System.out.print("\nResult 1 = ");  
        DecToBin.conversionLogical(ip);
        System.out.print("\nResult 2 = ");
        DecToBin.byMethod(ip);
        System.out.println("\nResult 3 = "+DecToBin.recursion(ip));
    }
}
于 2016-06-02T18:10:48.833 に答える