java 如何从键盘输入一个纯数字的字符串,转成整数后,再转成二进制数输出,并输出该二进制数包含1的个数?

输入用例:
2131231
输出用例:
9
输入用例:
4564641
输出用例:
10

其实不是很复杂,可以先想想再参考

    public static void main(String[] args) {
        System.out.println("输入全数字字符串");
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        // TODO: 2022/5/20 校验是否为全数字 
        Integer integer = Integer.valueOf(next);
        // TODO: 2022/5/20 转换异常的处理 
        System.out.println(String.format("转成数字为:%s", integer));
        String s = Integer.toBinaryString(integer);
        List<String> collect = Arrays.asList(s.split(""))
                .stream().filter(str -> str.equals("1")).collect(Collectors.toList());
        System.out.println(String.format("转换二进制包含1的个数:%s", collect.size()));
    }

结果

img

img

给一种实现方案:

import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String line = scan.nextLine();
        int num = Integer.parseInt(line);
        String bin  = Integer.toBinaryString(num);
        bin = bin.replace("0", "");
        System.out.println(bin.length());
        scan.close();
    }
}