2014-09-11 4 views
0

Итак, у меня есть код, который преобразует десятичное число в двоичный. Я использую для него рекурсивный алгоритм, но я не могу заставить его делать то, что я хочу. Вот код:Преобразование из десятичного в двоичное в Java

import java.util.*; 

public class binaryAddition { 

    public static int toBinary(int a){ 


     int bin = 0; 
     int remainder = 0; 
     if(a >= 1){ 
      toBinary(a/2); 
      bin = (a%2); 
     } 

     return bin; 


    } 

    public static void main(String[] args){ 

     System.out.println(toBinary(3)); 
     System.out.print(toBinary(3)); 
    } 
} 

Так что я хочу, чтобы вернуть бинарный раствор, так что я могу сохранить его в качестве переменной в моей основной метод. Однако мой текущий вывод дал бы мне только последнюю цифру двоичного числа. Я использовал номер 3 как тестовый пример, и я получаю 1 в качестве вывода для методов print и println. Почему это и как я могу это исправить?

Большое спасибо!

+0

Код * отбрасывает * результаты рекурсивных вызовов. Сделайте что-то с результатом 'toBinary' в методе. – user2864740

+0

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toBinaryString(int) – StackFlowed

ответ

1

Для начала вы можете захотеть, чтобы toBinary вернул String, а не int. Затем вы должны использовать результат этого, когда будете рекурсивно. Таким образом, вы могли бы написать, внутри вашего if,

bin = toBinary(a/2) + (a % 2); 

при условии, конечно, что toBinary возвращается String.

Если вы этого не сделаете, вы просто отбрасываете результат своих расчетов.

1

Код отбрасывает результаты рекурсивных вызовов.

Сделайте что-то с результатом toBinary в методе.

0

Просто сделайте это, как будто я сделал.

public static void main(String[] args) 
{ 
    int n, count = 0, a; 
    String x = ""; 
    Scanner s = new Scanner(System.in); 
    System.out.print("Enter any decimal number:"); 
    n = s.nextInt(); 
    while(n > 0) 
    { 
     a = n % 2; 
     if(a == 1) 
     { 
      count++; 
     } 
     x = x + "" + a; 
     n = n/2; 
    } 
    System.out.println("Binary number:"+x); 
    System.out.println("No. of 1s:"+count); 
} 
Смежные вопросы