将十进制转换为二进制Java

我试图使用Java从用户的输入转换十进制到二进制数。

我收到了错误。

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(remainder); { return null; } } } 

如何在Java中将十进制转换为二进制?

您的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 =十进制数。

 /** * @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() 

获取二进制数字串并希望将该字符串转换为int。 如果你使用

  int y=Integer.parseInt(x) 

您将收到NumberFormatException错误。

我将String x转换为Integers所做的是首先将String x中的每个Char转换为for循环中的单个Char。

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

然后我将每个Char转换回单个String,

  String u=String.valueOf(t); 

然后将每个String解析为整数。

Id figure Id发布这个,因为我花了一些时间来弄清楚如何将二进制文件如01010101转换为整数forms。

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

如果要反转计算的二进制forms,可以使用StringBuffer类并只使用reverse()方法。 这是一个示例程序,将解释其用法并计算二进制文件

公共课二进制{

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

}

二进制到十进制而不使用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); ; } } 

输出:

输入二进制数:

1010

二进制= 1010十进制= 10


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

输出:

输入二进制数:

1010

结果:10

一个相当简单而不是有效的程序 ,但它完成了这项工作。

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

以下将十进制转换为具有时间复杂度的二进制: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()); } 

在C#中,它与Java中的相同:

 public static void findOnes2(int num) { int count = 0; // count 1's String snum = ""; // final binary representation int rem = 0; // remainder while (num != 0) { rem = num % 2; // grab remainder snum += rem.ToString(); // build the binary rep num = num / 2; if (rem == 1) // check if we have a 1 count++; // if so add 1 to the count } char[] arr = snum.ToCharArray(); Array.Reverse(arr); String snum2 = new string(arr); Console.WriteLine("Reporting ..."); Console.WriteLine("The binary representation :" + snum2); Console.WriteLine("The number of 1's is :" + count); } public static void Main() { findOnes2(10); } 

这可能看起来很愚蠢,但如果你想尝试实用function

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

必须有一些实用方法直接做到,我不记得了。

 public class BinaryConvert{ public static void main(String[] args){ System.out.println("Binary Result: "+ doBin(45)); } static String doBin(int n){ int b = 2; String r = ""; String c = ""; do{ c += (n % b); n /= b; }while(n != 0); for(int i = (c.length() - 1); i >=0; i--){ r += c.charAt(i); } return r; } } 

我自己解决了这个问题,我想分享我的答案,因为它包括二进制反转然后转换为十进制。 我不是一个非常有经验的编码员,但希望这对其他人有帮助。

我所做的是在转换它时将二进制数据推送到堆栈,然后将其弹出以将其反转并将其转换回十进制。

 import java.util.Scanner; import java.util.Stack; public class ReversedBinary { private Stack st; public ReversedBinary() { st = new Stack<>(); } private int decimaltoBinary(int dec) { if(dec == 0 || dec == 1) { st.push(dec % 2); return dec; } st.push(dec % 2); dec = decimaltoBinary(dec / 2); return dec; } private int reversedtoDecimal() { int revDec = st.pop(); int i = 1; while(!st.isEmpty()) { revDec += st.pop() * Math.pow(2, i++); } return revDec; } public static void main(String[] args) { ReversedBinary rev = new ReversedBinary(); System.out.println("Please enter a positive integer:"); Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { int input = Integer.parseInt(sc.nextLine()); if(input < 1 || input > 1000000000) { System.out.println("Integer must be between 1 and 1000000000!"); } else { rev.decimaltoBinary(input); System.out.println("Binary to reversed, converted to decimal: " + rev.reversedtoDecimal()); } } } } 

你可以使用Wrapper Classes的概念直接将十进制转换为二进制,hex和八进制.Below是一个非常简单的程序,可以将十进制转换为反向二进制。希望它有助于你的java知识

 public class decimalToBinary { public static void main(String[] args) { int a=43;//input String string=Integer.toBinaryString(a); //decimal to binary(string) StringBuffer buffer = new StringBuffer(string); //string to binary buffer.reverse(); //reverse of string buffer System.out.println(buffer); //output as string } } 
 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); } } 

这是一个非常基本的程序,我在将一般程序放在纸上后得到了这个程序。

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

最快的解决方案之一:

 public static long getBinary(int n) { long res=0; int t=0; while(n>1) { t= (int) (Math.log(n)/Math.log(2)); res = res+(long)(Math.pow(10, t)); n-=Math.pow(2, t); } return res; } 

使用StringBuilder在构造中的十进制字符串前面使用insert()更好,而不调用reverse(),

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

好吧,你可以使用while循环,像这样,

 import java.util.Scanner; public class DecimalToBinaryExample { public static void main(String[] args) { int num; int a = 0; Scanner sc = new Scanner(System.in); System.out.println("Please enter a decimal number : "); num = sc.nextInt(); int binary[] = new int[100]; while(num != 0) { binary[a] = num % 2; num = num / 2; a++; } System.out.println("The binary value is : "); for(int b = a - 1; b >= 0; b--) { System.out.println("" + binary[b]); } sc.close(); } } 

您可以参考下面的示例获得一些好的解释,

将decimal转换为二进制示例。

所有问题都可以通过单行解决! 要将我的解决方案合并到项目中,只需删除binaryform(int number)方法,并替换System.out.print(binaryform(number)); with System.out.println(Integer.toBinaryString(number));

不需要任何java内置函数。 简单的递归就行了。

 public class DecimaltoBinaryTest { public static void main(String[] args) { DecimaltoBinary decimaltoBinary = new DecimaltoBinary(); System.out.println("hello " + decimaltoBinary.convertToBinary(1000,0)); } } class DecimaltoBinary { public DecimaltoBinary() { } public int convertToBinary(int num,int binary) { if (num == 0 || num == 1) { return num; } binary = convertToBinary(num / 2, binary); binary = binary * 10 + (num % 2); return binary; } } 

这是以三种不同方式将十进制转换为二进制

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