• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

for循环

java 来源:AAnwar007 4次浏览
/** 
* 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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)