import java.io.*;
class EXP2_10 {
public static void main(String args[]) throws IOException {
char ch;
System.out.println("按 1/2/3 数字键可得大奖!");
System.out.println("按’Q’键可退出循环操作.");
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;
case 'q':
System.out.println("欢迎下次再来!");
System.exit(0);
default:
System.out.println("真不幸,你没有奖品!下次再来吧。");
}
}
}
}
在这个程序中,想知道:
System.in.skip(2); 这个函数,具体作用,另外,实验发现,括号里面填大于等于2的数都是可以,求解释啊~~
还有就是,输入:1234,得到的结果是:恭喜你得大奖,一辆汽车!
                                    真不幸,你没有奖品!下次再来吧。
                      为什么不是:恭喜你得大奖,一辆汽车!
                                  没有白来,你得到一台冰箱!
求高手们帮忙解释下啊~~另外希望知道,这种输入流的的工作方式

解决方案 »

  1.   

    输入1234,程序首先给ch赋值为1所以输出:恭喜你得大奖,一辆汽车!
    然后skip(2),再次赋值ch为4不为“ ”,再次判断得结果: 真不幸,你没有奖品!下次再来吧。
      

  2.   

    skip(2)表示跳过两个,回车换行 /n/r这是两个字符,所以跳过这两个。
      

  3.   

    我记得咧System.in里的in是一个InputStream的对象,也就是一个字节输入流,所以呢,skip(2),代表的是跳过2个字节,由于java里面的char是2个字节,所以skip(2)就可以跳过回车。不知道理解有没有错。
      

  4.   

    System.in.skip(2); 可用什么函数代替他?
      

  5.   

    skip(2)到底是跳的哪两个字符啊?现在我还得到一个版本是  \0 和 \r 这两个
    还是因为都是占两个字节,而2代表的是字节呢??