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に変換するにはどうすればよいですか?
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);
}
}
Integer.toBinaryString()
は組み込みのメソッドであり、非常にうまく機能します。
Integer.toString(n,8) // decimal to octal
Integer.toString(n,2) // decimal to binary
Integer.toString(n,16) //decimal to Hex
ここで、n = 10進数。
/**
* @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;
}
使用したい人のために、ただ追加したい:
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などのバイナリを整数形式に変換する方法を理解するのに時間がかかったためです。
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);
}
}
以下は、時間の複雑さで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());
}
/**
* 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)
効率的というよりもむしろ単純なprogramですが、それでも仕事はします。
Scanner sc = new Scanner(System.in);
System.out.println("Give me my binaries");
int str = sc.nextInt(2);
System.out.println(str);
ばかげているように見えるかもしれませんが、ユーティリティ機能を試したい場合
System.out.println(Integer.parseInt((Integer.toString(i,2))));
直接それを行うには、何らかのユーティリティメソッドが必要です。覚えていません。
ワンライナーですべての問題を解決できます!私のソリューションをプロジェクトに組み込むには、binaryform(int number)
メソッドを削除し、System.out.print(binaryform(number));
をSystem.out.println(Integer.toBinaryString(number));
に置き換えます。
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
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());
}
計算されたバイナリ形式を逆にしたい場合は、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);
}
}