Java System.in.skip()的作用
程序员文章站
2022-04-16 09:16:28
import java.io.*; class LX2_10 {public static void main(String args[]) throws IOException {char ch;System.out.println("按 1/2/3 数字键可得大奖!"); System.out.println("按空格键后回车可退出循环操作."); while ((ch=(char)System.in.read())!=' ') { System.in.skip(...
import java.io.*;
class LX2_10
{
public static void main(String args[]) throws IOException {
char ch;
System.out.println("按 1/2/3 数字键可得大奖!");
System.out.println("按空格键后回车可退出循环操作.");
while ((ch=(char)System.in.read())!=' ') {
System.in.skip(2); // 跳过回车键(skip方法跳过和丢弃输入流中数据的 n 个字节)
switch (ch) {
case '1': System.out.println("恭喜你得大奖,一辆汽车!");
break;
case '2': System.out.println("不错呀,你得到一台笔记本电脑!");
break;
case '3': System.out.println("没有白来,你得到一台冰箱!");
break;
default:
System.out.println("真不幸,你没有奖品!下次再来吧。");
}
}
}
}
但是如果将System.in.skip(2);
注释掉
原因是:
当用户键入字母,按Enter 键后,虽然屏幕只显示了一个字母,但是在系统内存中实际保存了3个ASCII码。第一个ASCII码是用户键入的字母的ASCII码,第二个是回车的ASCII码013,第三个是换行的ASCII码010。
在这种情况下,System.in.read();
语句会在第二、三轮循环时分别读取内存中的ASCII 码013和010,而不会要求用户键入新的字母。只有在第四轮循环时,因为内存中的内容已经全部读取完,才会要求用户键入新的字母。
本文地址:https://blog.csdn.net/weixin_45884316/article/details/109556143
上一篇: spring事件通知机制
下一篇: 从体型可以看出来效率很高