已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
班 级 2010级软件工程2班 学生学号 201096064076 计算机科学系本科学年论文题目java应用程序控制台输入法 学生姓名 闫 洛 专业名称 软件工程 指导教师 田絮资 2013年1月15日Java应用程序控制台输入法闫洛(宝鸡文理学院 计算机科学系,陕西 宝鸡 721016)Java applications - console input methodYan Luo(Department of Computer Science, Baoji Univ.Arts&Sci., Baoji 721016 , Shaanxi, China)摘要Java已经从一种平台无关的编程语言演变成一种与厂商及平台无关的健壮的服务器端技术,促使IT业界深入发掘以Web为核心的应用程序的巨大潜力。在java的语言里包括了大量的类与方法,由它们来主导java语言的应用。本文主要研究java应用程序的控制台输入法,主要叙述Scanner类,包括它的介绍、用法、发展以及示例分析。本文主要包括四个部分:(1)java应用程序,主要描述java简介以及java应用程序的开发过程,以引出下文。(2)从控制台输入数据,该部分为本文的核心,主要讲述Scanner类及一些使用方法。(3)控制台输入数据相关的类和方法,该部分主要讲了和控制台输入相关的重要的类和方法。(4)总结,对全文进行总结。关键字:java,控制台输入,Scanner。AbstractJava is from a platform-independent programming language evolved into a server-side technology has nothing to do with the manufacturers and platform robust, great potential to promote IT industry to explore the application to Web as the core. In the Java language includes classes and methods of application, by them to dominate the Java language. Console input method based on Java application, mainly describes the Scanner class, including the introduction, development, usage and example analysis.This paper mainly includes four parts: ( 1 ) the Java application, describes the development process of Java and Java applications, to introduce below. ( 2 ) the input data from the console, this part is the core of this dissertation, mainly about the Scanner class and use method. ( 3 ) the class and method for console input data, this part is mainly about the classes and methods related to important and console input. ( 4 ) conclusion, summarizes the full text.Key words: java,Console input,Scanner.目 录摘要21java应用程序31.1java简介31.2 java应用程序的开发过程31.2.1 编写源文件31.2.2 编译41.2.3 运行41.2.4 使用开发工具Eclipse52从控制台输入数据62.1 从控制台输入的方法62.1.1 引言62.1.2 JDK 1.4 及以下版本读取的方法62.1.3 JDK 5.0 读取的方法82.1.4 JDK 6.0 读取的方法92.2 scanner类102.2.1 scanner类的介绍102.2.2 示例解释102.3 控制台输入数据的几种常用方法112.3.1 使用标准输入串对象System.in112.3.2 使用Scanner取得一个字符串或一组数字112.3.3 使用BufferedReader取得含空格的输入123控制台输入数据相关的类和方法133.1 Scanner类133.2 System类143.3 in方法153.4 nextInt154 总结151java应用程序1.1java简介Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling 和同事们共同研发,并在1995年正式推出。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态1的Web、Internet计算。从此,Java2被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。(2010年Oracle公司收购了SUN)由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。 Java平台由Java虚拟机(Java Virtual Machine,简称JVM)和Java 应用编程接口(Application Programming Interface,简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。Java分为三个体系J2SE(Java2 Platform Standard Edition,java平台标准版),J2EE(Java 2 Platform,Enterprise Edition,java平台企业版),J2ME(Java 2 Platform Micro Edition,java平台微型版)。1.2 java应用程序的开发过程1.2.1 编写源文件Public class HelloPublic static void main(String args) System.out.println(“你好,很高兴学习java!”);将源文件保存到D:test中,并命名为Hello.java源文件命名规则:如果源文件中有多个类,那么只能有一个类是public类,。如果有一个类是public类,那么源文件的名字必须与这个累的名字完全相同,扩展名是.java。如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以。1.2.2 编译当创建了Hello.java这个源文件后,就要使用java编译器(javac.exe)对其进行编译。在DOS命令提示符里面输入:D:testjavac Hello.java对其进行编译,没有错误提示,则编译正确。编译完成后生成一个Hello.class文件该文件称为字节码文件。这个字节码文件Hello.class将被存放在与源文件相同的目录中。如果java源文件中包含了多个类,那么用编译器javac编译完源文件后将生成多个扩展名为.class的文件,每个扩展名是.class的文件中只存放在一个类的字节码,其文件名与该类的名字相同。这些字节码文件将被存放在与源文件相同的目录中。1.2.3 运行Java应用程序必须通过java虚拟机种的 java解释器(java.exe)来解释执行其字节码文件。Java应用程序总是从主类的main方法开始执行。必须如下运行java应用程序:D:testjava HelloDOS命令行窗口将显示如下信息:你好,很高兴学习java!1.2.4 使用开发工具Eclipse1、创建java项目在Eclipse中编写程序,必须先创建项目。如图1所示:图12、创建java类文件创建java类文件时,自动打开编辑器。如图2所示:图23、运行java程序运行结果在控制台显示。如图3所示:图3注:在开发java程序前先熟练使用Eclipse,了解Eclipse的菜单项,以及相关快捷键。2从控制台输入数据2.1 从控制台输入的方法2.1.1 引言从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流。从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下,各个版本中如何从控制台中读取数据以及各自的优缺点。2.1.2 JDK 1.4 及以下版本读取的方法JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流从字符流中读入数据。示例代码如下:import java.io.IOException;import java.io.InputStreamReader;public class Test1 public static void main(String args) String str = readString(请输入字符串:); System.out.println(readString 方法的输入: + str); private static String readString(String prompt) BufferedReader br = new BufferedReader(new InputStreamReader(System.in); String str = null; try System.out.print(prompt); str = br.readLine(); catch (IOException e) e.printStackTrace(); return str; 从上面的代码段来看,这种控制台输入的方法非常地麻烦,为了能读取整行的数据,采用了BufferedReader类来进行处理,而且在读取的过程中还需要捕获IOException。不过这是 JDK 1.4 及以下版本中从控制台读取数据唯一的办法。还有一种非控制台读入数据的办法,就是采用 Swing 中的JOptionPane,会弹出一个非常漂亮的输入对话框让使用者输入数据,但这是一种比较另类的做法,不推荐使用。import javax.swing.JOptionPane;public class Test2 public static void main(String args) String str = readStringFromDialog(请输入字符串:); System.out.println(readStringFromDialog 方法的输入: + str); private static String readStringFromDialog(String prompt) return JOptionPane.showInputDialog(prompt); 上面的两种方法都有个共同的缺点只能读取字符串,若需要读取其他类型的数据需要手工进行转换。2.1.3 JDK 5.0 读取的方法从 JDK 5.0 开始,基本类库中增加了java.util.Scanner类,根据它的 API 文档说明,这个类是采用正则表达式进行基本类型和字符串分析的文本扫描器。使用它的Scanner(InputStream source)构造方法,可以传入系统的输入流System.in而从控制台中读取数据。示例代码如下:import java.util.Scanner;public class Test3 public static void main(String args) String str = readString5(请输入字符串:); System.out.println(readString5 方法的输入: + str); private static String readString5(String prompt) Scanner scanner = new Scanner(System.in); System.out.print(prompt); return scanner.nextLine(); 从代码量上来看,Test3比Test1少了很多的代码,核心代码只有两行。其实并不是Scanner将控制台输入给简单化了,只是在其内部的实现中已经将IOException处理了,而且采用InputStreamReader来一个字符一个字符进行扫描读取的,只是Scanner做了更高层次的封装。Scanner不仅可以从控制台中读取字符串,还可以读取除char之外的其他七种基本类型和两个大数字类型,并不需要显式地进行手工转换。Scanner不单单只能扫描控制台中输入的字符,它还可以让读入的字符串匹配一定的正则表达式模式,如果不匹配时将抛出InputMismatchException异常。使用System.in作为它的构造参数时,它只扫描了系统输入流中的字符。它还有其他的构造,分别可以从文件或者是字符串中扫描分析字符串的,具体的使用方法可以参考 API 文档说明。2.1.4 JDK 6.0 读取的方法从 JDK 6.0 开始,基本类库中增加了java.io.Console类,用于获得与当前 Java 虚拟机关联的基于字符的控制台设备。在纯字符的控制台界面下,可以更加方便地读取数据。示例代码如下:import java.io.Console;import java.util.Scanner;public class Test4 public static void main(String args) String str = readString6(请输入字符串:); System.out.println(readString6 方法的输入: + str); private static String readString6(String prompt) Console console = System.console(); if (console = null) throw new IllegalStateException(不能使用控制”); return console.readLine(prompt); 在Test1和Test3中,输入数据前的提示信息需要使用System.out.print();来输出,但是使用基于Console的Test4类,可以在方法参数中直接放入提示信息。但是,Console也有一些缺点,根据ConsoleAPI 文档的说明:虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。通过上面的文档说明可以看出,在使用 IDE 的情况下,是无法获取到Console实例的,原因在于在 IDE 的环境下,重新定向了标准输入和输出流,也是就是将系统控制台上的输入输出重定向到了 IDE 的控制台中。因此,在 IDE 中不能使用这个程序,而Test1和Test3就没有这种限制。2.2 scanner类2.2.1 scanner类的介绍Scanner Java.java.lang.Object - java.util.Scanner所有已实现的接口-Iterator一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 Scanner使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。 例如,以下代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(System.in);int i = sc.nextInt();再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配: Scanner sc = new Scanner(new File(myNumbers);while (sc.hasNextLong() long aLong = sc.nextLong();2.2.2 示例解释package test1215;import java.util.Scanner;public class Centigrade public static void main(String args) Scanner sc=new Scanner(System.in);System.out.print(请输入蟋蟀每分钟的鸣叫次数:);while(true)int c=sc.nextInt();double t=(c+40)/10;System.out.println(夏天温度t=+t);public static double t(int c)double t=(c+40)/10;return t; 在本例中,import java.util.Scanner;表示导入java.util包中的Scanner类。Scanner sc=new Scanner(System.in); int c=sc.nextInt();创建sc对象,使用户从System.in中读取一个数。2.3 控制台输入数据的几种常用方法2.3.1 使用标准输入串对象System.inSystem.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字,这就很不适合,需要其他方法取得这样的输入,这时可以使用java.util.Scanner类。2.3.2 使用Scanner取得一个字符串或一组数字import java.util.Scanner;public class ScannerDemopublic static void main( String args )Scanner sc = new Scanner(System.in);System.out.print( Please enter a string : );System.out.print( Your input is : + sc.next( ) );在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型。2.3.3 使用BufferedReader取得含空格的输入Scanner取得的输入以space, tab, enter 键为结束符,要想取得包含space在内的输入,可以用java.io.BufferedReader类来实现。例如:import java.io.*;public class BufferedReaderDemopublic static void main(String args) throws IOException/使用BufferedReader的readLine( )方法/必须要处理java.io.IOException异常BufferedReader br = new BufferedReader(new InputStreamReader( System.in ) );/java.io.InputStreamReader继承了Reader类String tx = br.readLine();System.out.println(tx);java初学者往往对从控制台输入数据感到困难,本文提供了一种简单的方法从控制台输入数据。import java.awt.*;import javax.swing.*;class Aapublic static void main(String args)String ss=JOptionPane.showInputDialog(,请输入一个数);tryint i=Integer.parseInt(ss);System.out.println(i=+i);catch(Exception e)System.out.println(输入的数据类型不对,程序将退出);System.exit(0);3控制台输入数据相关的类和方法3.1 Scanner类Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。 例如,以下代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(System.in); int i = sc.nextInt();再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配: Scanner sc = new Scanner(new File(myNumbers); while (sc.hasNextLong() long aLong = sc.nextLong(); 扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子: String input = 1 fish 2 fish red fish blue fish; Scanner s = new Scanner(input).useDelimiter(s*fishs*); System.out.println(s.nextInt(); System.out.println(s.nextInt(); System.out.println(s.next(); System.out.println(s.next(); s.close(); 输出为: 1 2 red blue 以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果: String input = 1 fish 2 fish red fish blue fish; Scanner s = new Scanner(input); s.findInLine(d+) fish (d+) fish (w+) fish (w+); MatchResult result = s.match(); for (int i=1; i=result.groupCount(); i+) System.out.println(result.group(i); s.close(); 3.2 System类System 类包含一些有用的类字段和方法。它不能被实例化。 在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。3.3 in方法“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。3.4 nextIntpublic int nextInt()将输入信息的下一个标记扫描为一个 int。 此方法调用 nextInt() 的行为与调用 nextInt(radix) 完全相同,其中的 radix 是此扫描器的默
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西名校联考2025-2026学年高三上学期11月考试生物试卷
- 2025年世博分校培训考试题及答案
- 电工安全技术试题及答案
- 重庆綦江地震应急预案(3篇)
- 庐江科四考试题目及答案
- 铁路局机务笔试题库及答案
- 空间音频音乐制作-洞察与解读
- 碳纤维复合应用-洞察与解读
- 2025年技术支持专家招聘面试题库及参考答案
- 2025年民宿运营经理岗位招聘面试参考试题及参考答案
- (标准)驿站转让合同协议书样本
- 2024版电网典型设计10kV配电站房分册
- 2025年工会基础知识考试题库及参考答案
- 企业团险培训课件
- 市政工程施工配套课件
- 国际贸易部管理制度
- 嗜酸细胞性食管炎的诊断与治疗
- 呼吸系统感染健康教育
- DB13 2122-2014 洁净颗粒型煤
- 白酒委托加工合同范本
- 消防供水协议书
评论
0/150
提交评论