gpt4 book ai didi

java - for循环的二进制计数器

转载 作者:行者123 更新时间:2023-11-30 02:45:15 26 4
gpt4 key购买 nike

/**
* 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);
}
}

这是来自 Code Abbey 的一个名为 Bit 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”。会发生什么?

  1. 首先,数字 4 存储在 a 中。
  2. 然后字符串“000100”或类似的内容将存储在字符串binary中。
  3. 然后创建一个包含一个元素的数组,该元素等于字符串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。

关于java - for循环的二进制计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40370261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com