Java核心技术卷I基础知识3.7.1 读取输入-阿里云开发者社区

开发者社区> 华章出版社> 正文

Java核心技术卷I基础知识3.7.1 读取输入

简介:

3.7.1 读取输入     

前面已经看到,打印输出到“标准输出流”(即控制台窗口)是一件非常容易的事情,只要调用System.out.println即可。然而,读取“标准输入流”System.in就没有那么简单了。要想通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。

 

(构造函数和new操作符将在第4章中详细地介绍。)

现在,就可以使用Scanner类的各种方法实现输入操作了。例如,nextLine方法将输入一行。

 

在这里,使用nextLine方法是因为在输入行中有可能包含空格。要想读取一个单词(以空白符作为分隔符),就调用

 

要想读取一个整数,就调用nextInt方法。

 

与此类似,要想读取下一个浮点数,就调用nextDouble方法。

在程序清单3-2的程序中,询问用户姓名和年龄,然后打印一条如下格式的消息:

 

最后,在程序的最开始添加上一行:

 

Scanner类定义在java.util包中。当使用的类不是定义在基本java.lang包中时,一定要使用import指示字将相应的包加载进来。有关包与import指示字的详细描述请参看第4章。

程序清单3-2 InputTest/InputTest.java

 

      注释:因为输入是可见的,所以Scanner类不适用于从控制台读取密码。Java SE 6特别引入了Console类实现这个目的。要想读取一个密码,可以采用下列代码:

 

为了安全起见,返回的密码存放在一维字符数组中,而不是字符串中。在对密码进行处理之后,应该马上用一个填充值覆盖数组元素(数组处理将在3.10节介绍)。

采用Console对象处理输入不如采用Scanner方便。每次只能读取一行输入,而没有能够读取一个单词或一个数值的方法。

java.util.Scanner 5.0

Scanner (InputStream in)

用给定的输入流创建一个Scanner对象。

String nextLine( )

读取输入的下一行内容。

String next( )

读取输入的下一个单词(以空格作为分隔符)。

int nextInt( )

double nextDouble( )

读取并转换下一个表示整数或浮点数的字符序列。

boolean hasNext( )

检测输入中是否还有其他单词。

boolean hasNextInt( )

boolean hasNextDouble( )

检测是否还有表示整数或浮点数的下一个字符序列。

java.lang.System 1.0

static Console console( ) 6

如果有可能进行交互操作,就通过控制台窗口为交互的用户返回一个Console对象,否则返回null。对于任何一个通过控制台窗口启动的程序,都可使用Console对象。否则,其可用性将与所使用的系统有关。

java.io.Console 6

static char[] readPassword(String prompt, Object...args)

static String readLine(String prompt, Object...args)

显示字符串prompt并且读取用户输入,直到输入行结束。args参数可以用来提供输入格式。有关这部分内容将在下一节中介绍。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接