《Java 7程序设计入门经典》一3.1 从键盘输入字符

简介: 本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第3章,第3.1节,作者 (美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.1 从键盘输入字符

到目前为止,本书中的示例程序都向用户显示信息,但不从用户接收信息。于是,只使用了控制台输出,没有使用控制台输入(即键盘输入)。主要原因在于,许多Java输入需要依赖和使用本书还未讲到的特性。这些特性在后面才会提及。另外,在真实情况下,许多Java程序和applet是图形界面或是窗口界面的,而不是控制台的。因此,本书的例子很少使用控制台输入。但是,有一种控制台输入相对容易使用,那就是从键盘读入字符。因为本章有许多需要用到这个特性的例子,所以在这里讨论它们。
我们将用System.in.read()方法来从键盘读入字符。System.in是System.out对应的对象。这是一个附着到键盘的输入对象。read()方法等待用户按键,并在用户按键后返回结果。字符以整数形式返回。所以,如果要将其赋给char型变量,必须使用强制类型转换。默认情况下,控制台的输入是行缓冲的(line buffered)。这里,术语“缓冲”(buffer)指的是一小部分用来在程序读取字符前保存字符的内存。在这个情况下,缓冲区存储一整行文本。由于缓冲了整行文本,因此必须在输入字符后敲击回车键才能将文本送入程序。下面的程序演示了如何从键盘读入字符。
image

以下是示例的运行结果。
image

注意,在程序中main()方法的开头如下所示:
image

因为使用了System.in.read(),所以程序必须指定抛出异常的语句throws java.io.IOException。这行代码对处理输入错误是必要的。这是Java的异常处理机制的一部分,将在第10章讨论。现在不需要关心它的精确意义。
有时,System.in的行缓冲特性会带来烦恼。当按回车键时,会往输入流输入回车符和换行符。在一些系统中,只会输入换行符。另外,在读取字符前,后来的字符不断追加到前面的输入缓冲中。于是,对于一些应用,需要在下次输入前通过读取字符来移除它们。在本章后面将会看到这样的例子。
image
image

相关文章
|
1月前
|
Java
JAVA结构化程序设计
JAVA结构化程序设计
16 0
|
1月前
|
Java 物联网 测试技术
Java面向对象程序设计3面向对象基础
Java面向对象程序设计3面向对象基础
168 0
|
15天前
|
Java
java_键盘录入、随机数
本文介绍了Java中键盘录入和Random类的使用。键盘录入用于从用户那里获取数据,通过导入`java.util.Scanner`,创建`Scanner`对象,调用`nextInt()`或`nextDouble()`读取整数和小数,`next()`读取字符串。Random类用于生成随机整数,导入该类后创建对象,调用`nextInt(int bound)`生成[0, bound-1]范围内的随机数。在JDK17及以上版本,可以使用`nextInt(int start, int end)`生成[start, end)范围的随机数。常见应用包括猜数字游戏和随机点名。
13 0
|
15天前
|
存储 Java 数据库连接
java使用mp持久化框架,写入5000个字符,但是VARCHAR(255) 会报错
使用Java的MyBatis Plus框架时,如果尝试将超过VARCHAR(255)限制的字符串(如5000个字符)存入数据库,会抛出异常。解决方法是将列类型改为TEXT。可通过在实体类属性上添加`@TableField(typeHandler = JdbcType.CLOB)`注解,如`private String content;`,将属性映射到CLOB类型列,以存储更长字符串。
9 0
|
16天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
22天前
|
SQL Java 数据库连接
Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
11 0
|
1月前
|
设计模式 Java 数据安全/隐私保护
Java面向对象程序设计
Java面向对象程序设计
7 0
|
1月前
|
存储 Java
Java程序设计练习题8异常处理
Java程序设计练习题8异常处理
65 0
|
1月前
|
Java
Java面向对象程序设计5接口与抽象类
Java面向对象程序设计5接口与抽象类
25 0
|
1月前
|
自然语言处理 Java Perl
Java数组的程序设计
Java数组的程序设计
17 0