Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将整数转换为二进制并打印数字之和_Java_Binary - Fatal编程技术网

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

Java 将整数转换为二进制并打印数字之和,java,binary,Java,Binary,下面的代码应该取一个整数,将其转换为二进制,然后打印数字之和: 例如: 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 =

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

例如:

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);
Scanner-in=新的扫描仪(System.in);
int X=in.nextInt();
字符串二进制=整数。toBinaryString(X);
整数金额=0;
字符串输入=整数。toString(X);
对于(int b=0;b
字符始终为单引号。

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

以下是正确的代码:

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

字符始终为单引号。

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

以下是正确的代码:

if (binary.charAt(b) == '1'){
  amount++;
}
较短的方法:

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"));
较短的方法:

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"));

二进制操作非常复杂

    int p = 0b10000000000000000000000000010101;
    int t = 0;
    for(int i=0; i<32; i++) {
        t += p & 1;
        p = p >> 1;
    }
    System.out.println(t);
int p=0b10000000000000000000010101;
int t=0;
对于(int i=0;i>1;
}
系统输出打印ln(t);

二进制操作非常复杂

    int p = 0b10000000000000000000000000010101;
    int t = 0;
    for(int i=0; i<32; i++) {
        t += p & 1;
        p = p >> 1;
    }
    System.out.println(t);
int p=0b10000000000000000000010101;
int t=0;
对于(int i=0;i>1;
}
系统输出打印ln(t);

会发生什么?您期望什么?如果您提供一系列示例输入,以及结果是什么,您将鼓励回答。这样可以更快地回答问题,因为问题可能是显而易见的,而不必过多地遵循逻辑和/或亲自编译并提出测试用例。(或者更简洁地说,“+1我打字时@GernotKrost”说了什么。:)发生了什么?你期望什么?如果你提供一系列的样本输入,以及结果是什么,你会鼓励回答。这样可以更快地回答问题,因为问题可能是显而易见的,而不必过多地遵循逻辑和/或亲自编译和提出测试用例。(或者更简洁地说,“+1我打字时@GernotKrost”说了什么。:)