下面的代码应该采用整数将其转换为二进制并打印数字之和。你能告诉我我做错了什么吗?
示例:
输入 - 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);
}
}
答案 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);