描述
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3’,输出:10110011)。
输入描述:
输入包括一个字符串,字符串长度不超过100。
输出描述:
可能有多组测试数据,对于每组数据, 对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
示例1
输入:
3 3a
输出:
10110011 10110011 01100001
代码如下:
import java.util.Scanner;
/*
* 奇偶校验:
* 将每个char按照ASCII码表转化成对应的int型数字,再将int转化成对应的7位二进制表示,第八位作为校验位,
* 如果7位二进制中1的个数为奇数,则校验位为0;如果1的个数为偶数,则校验位为1
*/
public class ParityCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String str = scanner.next();
String[] strs = new String[str.length()]; //用来保存二进制的String类型
for (int i = 0; i < str.length(); i++) {
//将字符charAt(i)转化成二进制
strs[i] = Integer.toBinaryString((int)str.charAt(i));
//如果字符串的长度不足7就在前面添0
while(strs[i].length() < 7) {
strs[i] = "0" + strs[i];
}
//用来统计1的个数
int count = 0;
for (int j = 0; j < strs[i].length(); j++) {
if (strs[i].charAt(j) == '1') {
count++;
}else {
continue;
}
}
if (count % 2 == 0) {
System.out.println("1" + strs[i]);
}else {
System.out.println("0" + strs[i]);
}
}
}
}
}