欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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("真不幸,你没有奖品!下次再来吧。");
			}
		}
	}
}

Java System.in.skip()的作用

但是如果将System.in.skip(2); 注释掉
Java System.in.skip()的作用

原因是:

当用户键入字母,按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