Java System.in.skip()的作用

2022-07-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(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

《Java System.in.skip()的作用.doc》

下载本文的Word格式文档,以方便收藏与打印。