//思路二,将字节数组重新转回字符串,然后再转为char数组,
//实现一个方法用来统计char数组的的个元素实际是占一个字节还是两个字节,
//如果占两个字节则说明是一个汉字,
//将每一位上的字节数累加sum,通过比较sum与x的值情况来判断是否为汉字的前一半。
String s = new String(bArr);
char []cArr = s.toCharArray();
int sum = 0;
boolean result = false;
for (int i = 0; i < cArr.length; i++){
sum = sum + getByte(cArr [i]);
if (sum == x - 1 ){
sum = sum + getByte(cArr [i + 1]);
if (sum == x ){
result = true;
}
else {
result = false;
}
}
else if (sum ==x-2){
sum = sum + getByte(cArr [i + 1]);
if(sum != x){
result = false;
}
else {
result = true;
}
}
}
return result;
}
private static int getByte(char c) {
int x =(int)c & 0xff00;
int y = x << 8;
if (y == 0){
return 1;
}
else {
return 2;
}
}
}
通过思路二实现了功能,自己想的,不知道有没有什么漏洞,各位高手看看。后来在网上看到了用递归思想做的,不知道跟我这个比,哪个效率高。求教。作者: 云惟桉 时间: 2012-5-12 23:46
else if (sum ==x-2){
sum = sum + getByte(cArr [i + 1]);
if(sum != x){
result = false;//开始不明白为什么楼主要把result置成false,但后来发现其实无所谓,这里写continue应该也是一样的吧?
}
else {
result = true;
}
}