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”。怎么了?
- 首先将数字4存储在
a
中。 - 然后字符串“000100”或类似的东西被存储在字符串
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
以上是 for循环 的全部内容, 来源链接: utcz.com/qa/262236.html