5.01串,奇数个数

字数 101阅读 20

/**

  • 对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是: 000000 000001 000010 000011 000100
  • 有这些01串中,有一些01串的1的个数是奇数个,这部分01串的前几个是: 000001 000010 000100 000111 001000
  • 001011 请按从小到大的顺序输出这些01串。
  • @author Zzm

*/

public class A1002 {

    public static void main(String[] args) {
        for (int i = 0; i < 64; i++) {
            String result = Integer.toBinaryString(i);
            int num = result.length();
            for (int j = 0; j < 6 - num; j++) {
                result = "0" + result;

            }
            int count = 0;//用于记录有多少个1
            for (int k = 0; k < 6; k++) {
                //int e = result.charAt(k); 一开始我是这样做的,当result.charAt(k);时我没有转换类型,但是却没报错,但程序却没有输出答案,然后我在这段代码下面输出一下查看这个e值时发现,原来这个e值是ASCII编码表里面的值48,因为(int)result.charAt(k),强转了,但是我们想要的是 ' 0 '想要这个零.
                //                          因为k为0时,result.charAt(k)拿到的第一个数是char类型字符的 '0' ,直接转化为了ASCII码表里的十进制48了,所以我们要进行类型转换转换为int类型
                int e = Integer.parseInt(String.valueOf(result.charAt(k)).toString());

                if (e / 1 == 1)   //如果有1,count就++
                    count++;
            }
            if (count == 1 || count == 3 || count == 5)
                System.out.println(result);

        }

    }

}

推荐阅读更多精彩内容