将数字转换为二进制java代码

时间:2014-05-14 14:19:36

标签: java binary

我正在编写一个代码,用于将数字转换为二进制表示。这是我的代码。它没有给出正确的答案,但我无法弄清楚我在哪里犯了错误。如果有人能够指出我的错误以及如何纠正错误,我将不胜感激。

public class ConvertBinary{
    public static String convertBinary(int n){
        String s="";
        while(n>0){
            s+=(n%2);

            n=n/2;
        }


        int len=s.length();
        String[] binary=s.split("");
        String[] binaryCopy=new String[s.length()];

        for(int i=0;i<len;i++){
            binaryCopy[i]=binary[len-i-1];
            s+=binaryCopy[i];
        }
        return s;

    }

    public static void main (String args[]){
        System.out.println(convertBinary(19));
    }
}

4 个答案:

答案 0 :(得分:1)

如果你在实施中看错误,你宁可放:

  s = (n % 2) + s;

不是

  s+=(n%2);

所以代码将是

  // n should be positive
  public static String convertBinary(int n){
    if (n == 0)
      return "0";

    String s = "";

    // for is more compact than while here
    for (; n > 0; n /= 2)
      s = (n % 2) + s;

    return s;
  }

然而在现实生活中

  Integer.toString(n, 2);

更方便

答案 1 :(得分:1)

public static String convertBinary(int n){
        String s="";
        while(n>0){
            s+=(n%2);

            n=n/2;
        }



    return (new StringBuffer(s).reverse().toString());
}

答案 2 :(得分:1)

除了所有这些答案之外,您的代码的问题在于您在撤消之前没有清除字符串。所以在for循环之前只需要放置s = "",你的代码应该正常工作.. :))

根据评论

public class ConvertBinary {
    public static String convertBinary(int n) {
        String s = "";
        while (n > 0) {
            s += (n % 2);

            n = n / 2;
        }

        int len = s.length();
        String[] binary = s.split("");
        String[] binaryCopy = new String[s.length()];

        s = "";

        for (int i = 0; i < len; i++) {
            binaryCopy[i] = binary[len - i - 1];
            s += binaryCopy[i];
        }
        return s;

    }

    public static void main(String args[]) {
        int num = 4;
        System.out.println(convertBinary(num));
        System.out.println(Integer.toBinaryString(num));
    }
}

答案 3 :(得分:0)

使用Java标准库:http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toString%28int,%20int%29

public class ConvertBinary{
    public static String convertBinary(int n){
        return Integer.toString(n, 2);
}

    public static void main (String args[]){
        System.out.println(ConveryBinary.convertBinary(19));
    }
}

编辑:正如@Holger所说,还有一个toBinaryString:http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toBinaryString%28int%29

public static String convertBinary(int n){
    return Integer.toBinaryString(n);
}