[英]Binary counter for loop
/**
* Created by abdul on 10/31/2016.
*/
import java.util.Arrays;
import java.util.Scanner;
public class BitCount {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter Cases:");
int cases = in.nextInt();
for (int i = 0; i < cases; i++) {
int a = in.nextInt();
String binary = Integer.toBinaryString(a);
String[] nums = {binary};
int count = 0;
for (int j = 0; j < nums.length; j++) {
//System.out.println(Arrays.toString(nums));
if (nums[j].equals("1"))
count++;
}
System.out.println(count);
}
}
这是来自代码修道院的一个问题,称为位计数。您可能知道,计算机内部的所有值都以二进制表示。 在这个简单的任务中,您将编写一个程序,该程序计算给定值中非零位数。
我们使用的是32位整数值,因此应该有0到32个非零位。 http://www.codeabbey.com/index/task_view/bit-count能否请您帮我理解为什么我的循环只增加一次而不是增加整个事情?
你做这个:
int a = in.nextInt();
String binary = Integer.toBinaryString(a);
String[] nums = {binary};
假设您输入“ 4”。 怎么了?
a
。 binary
。 binary
。 您试图做的是创建一个由字符串的每个数字组成的数组,但是实际上您创建了一个单元素数组,该数组简单地存储了您已经计算出的字符串的另一个副本! 尝试以下方法:
int a = in.nextInt();
String binary = Integer.toBinaryString(a);
int count = 0;
for (int j = 0; j < binary.length(); j++) {
//System.out.println(Arrays.toString(nums));
if (binary.charAt(j) == '1')
count++;
}
System.out.println(count);
这将检查二进制字符串的每个字符中的数字1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.