Преобразование десятичной в двоичную 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(number);
}
remainder= number %2;
binaryform(number >>1);
System.out.print(remainder);
{
return null;
} } }
Как преобразовать Decimal в Binary в Java?
Ответы
Ответ 1
Ваш метод 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);
}
}
Ответ 2
Integer.toBinaryString()
- встроенный метод и будет хорошо работать.
Ответ 3
Integer.toString(n,8) // decimal to octal
Integer.toString(n,2) // decimal to binary
Integer.toString(n,16) //decimal to Hex
где n = десятичное число.
Ответ 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;
}
Ответ 5
Я просто хочу добавить, для тех, кто использует:
String x=Integer.toBinaryString()
чтобы получить строку двоичных чисел и хочет преобразовать эту строку в int. Если вы используете
int y=Integer.parseInt(x)
вы получите ошибку NumberFormatException.
Что я сделал для преобразования String x в Integers, сначала преобразовал каждый отдельный Char в String x в один Char в цикле for.
char t = (x.charAt(z));
Затем я преобразовал каждый Char обратно в отдельную строку,
String u=String.valueOf(t);
затем разобрал каждую строку в целое число.
Идентификатор идентификатора отправил это сообщение, потому что я взял время, чтобы выяснить, как получить двоичный код, такой как 01010101, в форму Integer.
Ответ 6
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);
}
}
Ответ 7
Следующее преобразовывает десятичное число в двоичное с временной сложностью: 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());
}
Ответ 8
Если вы хотите отменить вычисленную двоичную форму, вы можете использовать класс 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();
}
}
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);
}
}
Ответ 9
Спасибо!!! Кроме того, я понял, добавляю ли возвращаемый null, чтобы выйти из цикла. Например, например, я ввел 2, чтобы преобразовать в двоичный файл, выход 10null.... Что там есть null и как я могу его исправить? - Euridice01 9 февраля в 3:47
заменить: return null;
на return "";
Ответ 10
Это может показаться глупым, но если вы хотите попробовать функцию утилиты
System.out.println(Integer.parseInt((Integer.toString(i,2))));
должен быть какой-то метод утилиты, чтобы сделать это напрямую, я не могу вспомнить.
Ответ 11
Это простой способ преобразования десятичных знаков в двоичный
public static void convertToBinary(int num) {
String last="";
while(num>0){
int mod=num%2;
num=num/2;
String binary=Integer.toString(mod);
last=mod+last;
}
System.out.println(last);
}
Ответ 12
Все ваши проблемы можно решить с помощью одной строки!
Чтобы включить мое решение в ваш проект, просто удалите метод binaryform(int number)
и замените System.out.print(binaryform(number));
на System.out.println(Integer.toBinaryString(number));
.
Ответ 13
Двоичный до десятичного без использования 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
Ответ 14
Довольно простая, но эффективная программа, но она делает свою работу.
Scanner sc = new Scanner(System.in);
System.out.println("Give me my binaries");
int str = sc.nextInt(2);
System.out.println(str);
Ответ 15
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());
}
Ответ 16
/**
* 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)
Ответ 17
В С#, но это то же самое, что и в Java:
public static void findOnes2(int num)
{
int count = 0; // count 1
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 is :" + count);
}
public static void Main()
{
findOnes2(10);
}
Ответ 18
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;
}
}
Ответ 19
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());
}
Ответ 20
Я просто решил это сам, и я хотел поделиться своим ответом, потому что он включает двоичное разворот, а затем преобразование в десятичное. Я не очень опытный кодер, но надеюсь, что это будет полезно для кого-то другого.
То, что я сделал, было толкать двоичные данные в стек, когда я его конвертировал, а затем выталкивал его, чтобы отменить его и преобразовать обратно в десятичную.
import java.util.Scanner;
import java.util.Stack;
public class ReversedBinary
{
private Stack<Integer> 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());
}
}
}
}
Ответ 21
Вы можете использовать концепцию Wrapper Classes для прямого преобразования десятичной дробной в двоичную, шестнадцатеричную и восьмеричную. 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
}
}
Ответ 22
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);
}
}
Ответ 23
Это очень простая процедура, и я получил это после того, как вы выполнили общую процедуру на бумаге.
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
}
}
}
}
Ответ 24
//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;
}
Ответ 25
Одно из самых быстрых решений:
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;
}
Ответ 26
Еще лучше с 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();
}
Ответ 27
Ну, вы можете использовать цикл 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();
}
}
Вы можете сослаться на пример ниже для хорошего объяснения,
преобразовать десятичный в двоичный пример.
Ответ 28
Нет необходимости в каких-либо встроенных функциях 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;
}
}
Ответ 29
Вот преобразование десятичного в двоичный файл тремя различными способами.
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));
}
}
Ответ 30
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);