代码之家  ›  专栏  ›  技术社区  ›  Ibraheem Ahmed Shepmaster

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

  •  0
  • Ibraheem Ahmed Shepmaster  · 技术社区  · 7 年前

    下面的代码应该取一个整数,将其转换为二进制,然后打印数字之和:

    例子:

    Input = 15 
    
    ( 15 in Binary is "1111" and 1+1+1+1 = 4 )
    
    Output = 4
    

    这是我目前掌握的代码。然而,它并没有按预期工作。如果您输入 15 ,返回 0 而不是 4 如上所述:

      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.out.println(amount);
    
    3 回复  |  直到 4 年前
        1
  •  1
  •   Rehan Javed    7 年前

    字符总是单引号。

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

    以下是正确的代码:

    if (binary.charAt(b) == '1'){
      amount++;
    }
    
        2
  •  1
  •   Tal Avissar    7 年前

    较短的方法:

    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"));
    
        3
  •  1
  •   Dmitry Nikiforov    7 年前

    二进制运算是很长的

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