for循环

/** 

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

}

}

这个二进制计数器从代码调用修道院数位 正如你可能知道,计算机内的所有值以二进制表示的一个问题。在这个简单的任务中,您需要编写一个程序来计算给定值中的非零位数。for循环

我们使用的是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

以上是 for循环 的全部内容, 来源链接: utcz.com/qa/262236.html

回到顶部