将整数转换为二进制并打印数字之和

时间:2017-11-18 18:17:14

标签: java binary

下面的代码应该采用整数将其转换为二进制并打印数字之和。你能告诉我我做错了什么吗?

示例:

输入 - 15

二元中的15是" 1111"和1 + 1 + 1 + 1 = 4

输出 - 4

import java.util.*;
import java.io.*;
import java.math.*;


class Solution {

public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    int X = in.nextInt();
    String binary = Integer.toBinaryString(X);   
    int amount = 0;  
    String input = Integer.toString(X);

  for(int b = 0; b < binary.length(); b++){

  if (binary.charAt(b) == 1){
      amount++;
      //System.err.println(binary.charAt(b));
  }


  }
    System.out.println(amount);

}
}

3 个答案:

答案 0 :(得分:1)

字符总是单一的,用单引号书写。

1是从String中提取的字符,应该用单引号书写。

这是正确的代码:

if (binary.charAt(b) == '1'){
  amount++;
}

答案 1 :(得分:0)

更短的方法:

Scanner in = new Scanner(System.in);
int X = in.nextInt();
String binary = Integer.toBinaryString(X);   
String input = Integer.toString(X)
System.out.println(StringUtils.countMatches(input, "1"));

答案 2 :(得分:0)

二进制操作是理所当然的

    int p = 0b10000000000000000000000000010101;
    int t = 0;
    for(int i=0; i<32; i++) {
        t += p & 1;
        p = p >> 1;
    }
    System.out.println(t);