/**
- 对于长度为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);
}
}
}