[英]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.