继续写博:近期工作状况和一个面试题

终于又可以上网了.内外网隔离了好一段时间了.风头紧的时候已经过去.又可以在Javaeye里畅游了.

 

有很多天都没有写博客了,自己也知道这种三天打鱼两天晒网的写作是不好的,但是,实在是没有办法.公司和宿舍都不能上网,做IT的竟然和互联网断绝了联系,这不得不说是一件很可悲的事情。

 

SG186工程是一个实实在在的大工程,最近负责维护一期的工程了,维护的同时还负责开发网上招投标模块新业务的开发工作,大的项目确实能够有效的提高程序员的业务认识能力,最近就很有感触,每天都在和业务文档打交道,写代码编程的时间倒少了,这样下去肯定是不行滴。所以只能利用空闲的时间去学习,去提高自己。

 

OK.废话不多说,能上网就是一种幸福。继续我的Javaeye之路

 

前些天一哥们面试,遇到一个笔试编程题:手写识别中英文字符的JAVA程序(在命令行窗口中输入中英文混合字符串然后加以识别即可),他回来后说这道题没有做,因为时间紧,也没有想到比较好的方法,虽然也有想到方法,但当时他觉得不太好,所以干脆就没有写。

 

他跟我们说了之后,我考虑了一下,写了一个小程序。要点是将输入的中英文混合字符串的二进制码与8的二进制码进行“与”运算,即使用“&”符进行运算,如果运算的最高位是0,那么该字符是英文,否则为中文,代码如下:

 

class CE
{
	public static void main(String args[]) throws Exception{
		byte[] buf = new byte[1024];
		int len = System.in.read(buf);
		for(int i=0;i<len;i++) {
			//使用&运算符,让buf[i]与8的二进制码进行与运算,如果最高位为0,则buf[i]为英文,否则为中文
			if((buf[i]& 0x80) == 0)	{
				if(buf[i]=='\r' || buf[i]=='\n')
					continue;
				System.out.write('(');
				System.out.write(buf[i]);
				System.out.write(')');
			}else{
				//最高位不为0,那为中文则将i和++i合并输出
				System.out.write('(');
				System.out.write(buf[i]);
				System.out.write(buf[++i]);
				System.out.write(')');
			}
			System.out.flush();
		}
	}
}

 

我能想到的好的方法也只有这么一个了,如果大家还有更好的方法。请赐教!

 

你可能感兴趣的:(编程,工作,面试,互联网)