java实现外部输入输出_认识Java类库,实现基本的输出与输入

课程导言

【在上节课了解了变量的作用及如何声明变量,本节课探讨Java类库以及基本的输出与输入。通过本课的学校,你将掌握如何输出内容到控制台,如何从获得用户从键盘输入的数据,并了解类库的使用方法】

在程序运行过程中,既需要输入数据,也需要输出数据。例如,求长方形面积算法要求用户输入长方形的长度和宽度值,求出面积后,将结果输出到控制台。在Java程序中,控制台是指运行Java程序的窗口。例如,在Windows命令行窗口下运行程序时,控制台是Windows命令行窗口,在集成开发工具Eclipse运行Java程序时,控制台是Eclipse提供的程序运行窗口,也称为Java console。

课程分为三个小节,第一小节介绍Java类库,Java类库为开发者提供一组程序集合,开发者可以直接使用Java类库提供的程序集合完成诸如输入输出等功能;第二小节介绍Java类库中的Sysytem类,Sysytem类提供了系统控制以及输出信息到控制台的方法;第三小节介绍Java类库中的Scanner类,Scanner类提供了从键盘等外部设备输入数据的功能。

第一小节 Java类库

类库是一组类的集合,一个类可以帮助开发者完成一些通用功能,提高开发速度和质量,这些类可以被开发者直接使用。

Java类库以包层次的方式对外提供,可以把Java包理解为文件目录层次,最外层的目录为Java,Java包含lang、util等子目录,util子目录又包含Scanner、Properties等类文件,也包含zip等子目录。

7d6c88cd63d57bfc38d316574dd6f17a.png

在程序中使用Java类库时,必须要把类的整个包路径通过Java语言的import语句导入到程序中。例如,如果在程序中要引入Scanner类,可以将下面的语句加在程序的开始。

import java.util.Scanner;

Java编译器默认为所有的Java程序引入了Java类库的Java.lang 包中所有的类。其中定义了一些常用类,如System、String、Object、Math等。因此我们可以直接使用这些类,而不必显式引入。但使用其他包中的类时,则必须先引入、后使用。不过,也存在一种特殊情况,可以不用导入而直接使用外部包的类,就是使用类的完全限定名称。例如,程序要使用Scanner类,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner。

下面是Java程序中常用的类库:

● Java.lang:包含一些Java语言的核心类库,如String、Math、Interger、System和Thread。

● Java.util:包含一些实用工具类,如定义系统特性、日期时间、日历、集合类等。

● Java.io:包含能提供多种输入输出的文件读写类。

● Java.net:包含执行网络相关操作的类。

● Java.sql:Java操作数据库的一些API。

● Java.text:包含了一些用来处理文本、数字和消息的类和接口。

● java.awt:用来构建和管理Java程序图形用户的界面的类。

● Javax.swing:在awt基础上构建的一套新的图形界面类。

第二小节 System类

System类是Java核心类库之一,提供了标准设备的输入与输出以及系统控制功能。这里说的标准设备是指计算机的显示器、键盘和鼠标,其中显示器是输出设备,键盘和鼠标是输入设备。

System类本身并不支持对设备的读(输入)写(输出)功能。不过System有三个重要的属性err、in、out,System借助这三个属性实现了对设备的读写功能。

其中,err和out用于输出信息。

err是输出错误信息的,错误信息是在程序发生错误时要输出的信息。例如,当你预测一条除法语句可能会发生被零除的错误时,就可以用err输出错误信息;再如,程序应用try—catch语句时,被catch语句捕捉到的错误,在catch语句中就可以用err输出捕捉到的错误信息。

err默认是把错误信息输出到显示器(控制台),也可以通过重定向输出到其它显示设备,也可以输出到文件,可以调用err的setErr方法进行重定向。

out用于输出程序的运行信息,运行信息包括程序对用户的提示信息、程序计算结果等信息。例如,程序提醒用户输入长方形的长度和宽度值;再如,程序计算机长方形面积值,并将计算结果输出到控制台。

out同err一样,默认把运行信息输出到控制台。也可以通过重定向输出到其它显示设备。

err和out提供了print、println、printf等方法用于输出信息,print和println的主要区别是print输出结束后,不添加换行符,下次调用print输出数据时,依然是接上次的位置输出。println输出结束后,添加换行符,下次调用print或println会另起一行输出;printf可以对信息进行格式化输出。

前面介绍了err和out,下面介绍in。

in用于输入信息。程序运行时需要从外部获取数据,数据的输入有人工输入、文件输入、机器输入等多种输入方式。人工可以通过键盘、鼠标、手写等方式输入信息到程序;文件输入是指信息存储在文件中,由程序打开文件直接读取文件内容,例如视频播放器的输入源就是视频文件,视频播放器打开视频文件,读取视频内容并实时播放;机器输入是指由机器识别外部内容,并将识别的内容输入的程序。例如,扫描仪扫描照片,并将识别的照片内容输入到扫描程序,扫描程序再把识别的照片内容存储到照片文件。

in完成从输入源获取数据的功能,in提供了统一抽象的读取方法,以适应不同的输入设备需要。支持输入设备的类需要实现in抽象的读取方法,才能从in获取数据。同时in可以扩展其输入功能,简化输入程序。例如,把in与支持文本扫描的Scanner类关联起来,就可以简化输入程序的编写,下面的语句将in和Scanner关联起来:

Scanner sc = new Scanner(System.in);

第三小节 Scanner类

当程序需要从键盘获取用户输入的命令或数据时,就需要使用到Scanner类,Scanner类是文本扫描类,用于简化输入程序的编写。例如:获取用户输入的长方形的长度和宽度时,就可以通过Scanner类方便地获取。

通过Scanner类获取用户输入时,控制台会一直等待用户的输入,直到用户敲回车键结束,把所输入的内容传给Scanner类,程序要从Scanner类获取输入的内容,则只需要调用Scanner类的nextLine()方法即可。

Scanner需要和System类in属性关联起来,可以方便获取用户从键盘的输入。Scanner通过传入的System.in获取用户输入,并对用户输入的字符进行处理,屏蔽了获取用户输入的复杂操作。

Scanner类提供了多个方法,用于获取用户的输入,主要方法有next和nextLine。next一定要读取到有效字符后才可以用回车键结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next会自动将其滤掉;nextLine持续接收用户输入,直至用户按下回车键,与next不同的是,nextLine不过滤空格和Tab键。

代码示例:Scanner类的输入操作

7aa0de4c5f8c9dd284e37c2c6903a5fc.png

了解了类库和基本的输入与输出后,可以回到求长方形面积算法的问题了,算法的第二个步骤是输入长度和宽度,并将长度赋值给num1,宽度赋值给num2,用代码实现算法的1、2步骤:

021dcdebff32832d7fd80dd2782cfbd1.png

■ 课程小结

1、Java类库是一组类的集合,包含众多的类。开发者可以直接将这些类集成到代码中,而无需再重写类似功能的代码。如输入与输出功能、文件读写功能、网络功能等。使用Java类库时,开发者需要使用import语句将类库导入到程序中,然后才能使用。Java编译器默认为所有的Java程序引入了Java类库的Java.lang 包中所有的类。其中定义了一些常用类,如System、String、Object、Math等,因此使用这些类时,无需再导入类库。

2、System类是一个非常重要的类,该类提供了标准设备的输入与输出以及系统控制功能。System类有三个非常重要的属性err、out、in,其中err和out是都是输出信息到设备,err和out的区别是err用于程序错误信息的输出,out用于程序运行信息的输出;in是从各类输入设备获取数据,in不能被直接使用,需要和支持输入设备的类关联后才能使用。

3、从键盘获取用户输入的数据时,一般使用Scanner类。Scanner类可以对System.in获取的数据进行预处理,简化开发者对输入数据的处理工作。

■ 思考与练习

1、当程序运行发生错误时,如何在程序中输出错误信息?

2、当程序需要输出相应信息给用户时,如何输出信息?

3、如何从键盘获取用户输入的数据?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值