为什么我的二进制转换器号码只返回数字1?

时间:2014-04-26 17:27:22

标签: java binary numbers

我创建了一个转换器,它有望转换输入二进制数的任何正常数字,但无论输入什么,它都只会返回数字“1”,为什么?

import java.util.Scanner;
public class NumtoBinary{
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.println("Welcome to the Number to binary converter");
    int Num = sc.nextInt();
    System.out.println(toBin(2));
}
    public static int toBin(int Num){
        int result = 0;

        while(Num > 0){
            int mod = Num % 2;
            result = result * 1 + mod;
            Num /= 2;
        }
        return result;
    }

}

1 个答案:

答案 0 :(得分:1)

你的方法很接近但是对于你需要反映的每个为mod生成零的迭代。您可以使用String来跟踪每次迭代的结果,并将其转换为返回值的整数,如下所示:

public static int toBin(int Num) {
   String result = "";

   while (Num > 0) {
      int mod = Num % 2;
      result = mod + result;
      Num /= 2;
   }
   return Integer.parseInt(result);
}

例如上面的方法,如果你输入12,那么每次迭代都会像这样构建字符串" 0"," 00"," 100",&# 34; 1100"