System.in.skip(2);
当用户键入字母,按Enter 键后,虽然显示只输入了一个字母,但是在系统内存中实际保存了3个ASCII码。
第一个ASCII码是用户键入的字母的ASCII码,第二个是回车的ASCII码013,第三个是换行的ASCII码010。
在这种情况下,System.in.read(); 语句会在第二、三轮循环时分别读取内存中的ASCII 码013和010,而不会要求用户键入新的字母。只有当第四轮循环时,由于键入值已循环完毕,所以停止!
ch=(char)System.in.read()
执行System.in.read()方法将从键盘缓冲区读入一个字节的数据,然而返回的16位的二进制数据,其低8位为键盘的ASCII码,高8位为0 ******** ********
代码例子:
import java.io.*;
class KY5_3 {
public static void main(String args[]) throws IOException {
char ch;
System.out.println("抽奖游戏,祝您好运!");
System.out.println("按 1、2、3 数字键后回车,可得大奖!");
System.out.println("按空格键后回车,可退出本游戏.");
while ((ch=(char)System.in.read())!=' ')
{
System.in.skip(2); // 跳过回车键
switch (ch) {
case '1':
System.out.println("恭喜您得大奖,一辆汽车!");
break;
case '2':
System.out.println("不错呀,您得到一台笔记本电脑!");
break;
case '3':
System.out.println("没有白来,您得到一台冰箱!");
break;
default:
System.out.println("对不起,没有奖品给您!欢迎下次光临。");
}
}
}
}