基于文本的应用教学.ppt
《基于文本的应用教学.ppt》由会员分享,可在线阅读,更多相关《基于文本的应用教学.ppt(75页珍藏版)》请在三一办公上搜索。
1、第十课:基于文本的应用,周甫,学习目标,学习目标,1 程序交互的几种方式,程序在运行的时候,我们要给程序输入数据,程序根据输入的数据作出响应。常见的输入方式有:命令行参数系统属性标准的输入从文件读入,实例分析 1,问题的描述:通过命令行参数给程序输入数据解决方案:当一个Java应用程序从终端启动时,用户可以提供零个或多个命令行参数。这些命令行参数都是字符串,这些字符串可以是独立的记号(如:arg1),也可以是引号之间的多个符号(another arg)。参数序列跟在程序类的名字后面输入;然后被存放在String 对象的数组中,传递给main 方法。,实例分析 1(续一),代码如下:class
2、TestArgs public static void main(String args)for(int i=0;i args.length;i+)System.out.println(argsi);,实例分析 1(续二),结果,实例分析 2,问题描述:通过系统属性给程序传入数据解决方案:系统属性是另外一种在运行时向程序传递参数的机制。每个属性都是一个属性名和属性值的映射对。属性名和属性值都是字符串。Properties 类表示这样的映射。System.getProperties方法返回系统的属性对象。System.getProperties(String)方法返回String属性的值。Sys
3、tem.getProperties(String,String)方法允许你在属性名不存在时返回默认值。你可以使用递归调用PropertyNames方法遍历全部属性名的集合;对每个属性名调用getProperty方法得到所有属性的值。,实例分析 2(续一),代码如下:import java.util.*;class TestSP/System Properties public static void main(String args)Properties p=System.getProperties();/第4行Enumeration e=p.propertyNames();/第5行while
4、(e.hasMoreElements()String name=(String)e.nextElement();if(name.equals(aaa)String value=p.getProperty(name);System.out.println(name:+name+value:+value);分析:第4行取得系统属性的集合,第5行从属性集合中得到属性名的枚举.,实例分析 2(续二),结果:运行:java-Daaa=345 TestSP/-D后面是属性的名字,=后面是属性的值,注意是大写的D,实例分析 3,问题描述:标准的输入解决方案:多数应用都会发生人机交互。人机交互经常通过控制台文
5、本输入/输出来完成。Java 2 SDK 用公有类支持控制台I/O。System.out是一个PrintStream对象,它指向运行Java应用程序的终端窗口。System.in是一个InputStream对象,它指向用户的键盘。,实例分析 3(续一),代码:importjava.io.*;classTestKI/Keyboard Inputpublic static void main(String args)Strings;/进行字符串的包装,就可以读取一行字符串InputStreamReader isr=new InputStreamReader(System.in);BufferedR
6、eader br=new BufferedReader(isr);(按 ctrl+c 键或者输入exit 退出程序!);,实例分析 3(续二),trys=br.readLine();while(s!=null,实例分析 3(续三),运行:,实例分析 4,问题的描述:在程序中实现文件的创建,读,写解决方案:Input/Output(I/O)是程序中最重要的元素之一。Java技术包含了一套丰富的I/O流。这一节我们要讲解文件中字符数据的读写。我们将讲述:创建文件对象。操作文件对象。读写文件流。,实例分析 4(续一),创建一个新的File对象File类提供了若干处理文件和获取它们基本信息的方法。在j
7、ava技术中,目录也是一个文件。你可以创建一个代表目录的文件,然后用它定义另一个文件:File myFile;myFile=new File(FileName);myFile=new File(/,FileName);File myDir=new File(/);myFile=new File(myDir,FileName);*,实例分析 4(续二),文件测试和工具 当你创建一个File对象后,你可以使用下面任何一种方法来获取有关文件的信息:文件名:String getName()String getPath()String getAbsolutePath()String getParent(
8、)boolean renameTo(File newName)目录工具:boolean mkdir()String list(),实例分析 4(续三),文件测试:boolean exists()boolean canWrite()boolean canRead()boolean isFile()boolean isDirectory()boolean isAbsolute()通用文件信息和工具:long lastModified()long length()boolean delete(),实例分析 4(续四),代码:import java.io.*;class TestReader publ
9、ic static void main(String args)/读取当前目录下的,该类的原文件File f=new File(TestReader.java);/输出到当前目录下的out.java,系统会自动创建该文件File f1=new File(out.java);FileReader fr=null;FileWriter fw=null;BufferedReader br=null;PrintWriter pw=null;,实例分析 4(续五),tryfr=new FileReader(f);br=new BufferedReader(fr);fw=new FileWriter(f1
10、);pw=new PrintWriter(fw,true);/true 代表自动刷新到磁盘里String ss=br.readLine();while(ss!=null,实例分析 4(续六),finally/不管发生不发生异常,都要进行IO流的关闭try/防止发生空指针异常,也就是说在创建文件IO流之前发生异常。if(br!=null)br.close();if(pw!=null)pw.close();catch(Exception e)e.printStackTrace();/以上是关闭IO流最完整的代码,实例分析 5,问题的描述:通过控制台写数据到文件里解决方案:1,建立控制台的输入流2,
11、建立文件的输出流,实例分析 5(续一),代码如下:import java.io.*;classTestKWFpublic static void main(String args)File file=new File(keyout.java);BufferedReader br=null;/要习惯性的给声明的引用类型变量初始化为nullPrintWriterpw=null;,实例分析 5(续二),trybr=new BufferedReader(new InputStreamReader(System.in);pw=new PrintWriter(new FileWriter(file);(按
12、 ctrl+c 键 或者输入exit 退出程序!);Strings=null;s=br.readLine();/如果按 ctrl+c 键,那么s=null,所以要先进行s!=null判断,不然/会出现空指针异常(调用s.equals(exit))while(s!=null,实例分析 5(续三),catch(IOException e)e.printStackTrace();finallytryif(br!=null)br.close();if(pw!=null)pw.close();catch(Exception e)e.printStackTrace();,2 Math类,Math类是用来支
13、持数学计算的,它打包在java.lang包中,包含一组静态方法和两个常数,是终态(final)的,它不能被实例化。它主要包括下列方法:分割 int ceil(double d):返回不小于d的最小整数。int floor(double d):返回不大于d的最大整数。int round(float f):返回最接近f的整数(int)。long round(double d):返回最接近d的整数(long)。,2 Math类(续一),极值、绝对值:double abs(double d):返回d的绝对值。对于float,int,long有类似的函数。double min(double d1,dou
14、ble d2):返回d1与d2中的小者.对于float,int,long有类似的函数。double max(double d1,double d2):返回d1与d2中的大者。对于float,int,long有类似的函数。三角函数:double sin(double d):返回d正弦。对于余弦和正切有类似的函数cosine,tangent。double asin(double d):返回d反正弦。对于反余弦和反正切有类似的函数acos,atan。double toDegrees(double r):将弧度换算成度。double toRadians(double d):将度换算成弧度。,2 Mat
15、h类(续二),对数、指数 double log(double d):返回d的自然对数。double exp(double d):返回以e为底的指数。其它函数 double sqrt(double d):返回d的平方根。double pow(double d1,double d2):返回d1的d2次幂。double random():返回0 至 1 的随机数。常数 PI:圆周率,double。E:自然对数的底,double.,课堂练习,比较2个随机数的大小。要求:分别比较整数,单精度浮点数和双精度浮点数。,3 String的方法,String concat(String s):返回一个新的Str
16、ing,即,在原来的String后面追加上s。String replace(String old,String new):返回一个新的String,将原来的String中的old替换成new。String substring(int start,int end):返回一个新的String,它是原来的String中从start到end的一部分。String toLowerCase():返回一个新的String,它将原来的String中的大写字母变成小写。String toUpperCase():返回一个新的String,它将原来的String中的小写字母变成大写。,3 String的方法(续一)
17、,查找方法:boolean endsWith(String s):如果原来的String以s为结尾,则返回true。boolean startsWith(String s):如果原来的String以s为开始,则返回true。int indexOf(String s):返回String中第一次出现s偏移量。类似有lastindexOf,从串尾开始查找。int indexOf(int ch):返回String中第一次出现ch偏移量。类似有lastindexOf,从串尾开始查找。int indexOf(String s,int offset):返回String中从offset开始查找,第一次出现s的
18、偏移量。类似有lastindexOf,从串尾开始查找。int indexOf(int ch,int offset)返回String中从offset开始查找,第一次出现ch的偏移量。类似有lastindexOf,从串尾开始查找。,3 String的方法(续二),比较方法:boolean equals(String s):如果原String与s逐字符比较都相等,则返回true。boolean equalsIgnoreCase(String s):如果在忽略大小写的情况下,原String与s逐字符比较都相等,则返回true。int compareTo(String s):进行词汇比较,如果原Stri
19、ng 小于s则返回负数;如果原String 大于s则返回正数;如果原String 等于s则返回零。其它方法:char charAt(int index):返回index处的字符。int length():返回String的长度。,4 StringBuffer类,StringBuffer对象是一个可以改变的统一编码字符串。String与StringBuffer之间没有继承关系。构造函数StringBuffer():创建一个空的StringBuffer.StringBuffer(int capacity):创建一个空的StringBuffer,容量是capacity。StringBuffer(St
20、ring initialString):创建一个StringBuffer,其内容是initialString。,4 StringBuffer类(续一),修改方法StringBuffer append(String s):在原来的StringBuffer后面追加上s。对于下列参数类型有重载的方法:boolean,char,char,double,float,int,long,Object。StringBuffer insert(int offset,String s):在原来的StringBuffer的offset处插入s.对于下列参数类型有重载的方法:boolean,char,char,dou
21、ble,float,int,long,Object。StringBuffer reverse():颠倒原StringBuffer中字符的顺序.void setCharAt(int index,char ch):将StringBuffer中的index处设为ch。void setlength(int newLength):设定StringBuffer的长度.*,5 StringBuffer与String的区别,主要是效率上的区别。它们都可以表示一个字符串对象,只不过String类型的字符串对象,只要值改变,存储的空间也会改变,而StringBuffer是在原来的空间上进行修改的。所以要进行大量的
22、字符串操作,要用StringBuffer.而如果不是频繁操作字符串对象,两者都可以,只不过String 更方便些,因为用两个双引号就可以表示一个Sting对象。,实例分析 6,问题的描述:String 类的使用解决方案:String 对象是一个不可变的统一编码字符串。该类是JDK中最特殊的一个类。只要一个String对象值改变,系统会在内存堆里寻找新的空间来存放改变后的值。,实例分析 6(续一),代码分析:class TestStringpublic static void main(String args)String s1=abc;String s2=abc;/在内存中只生成了一个对象。/
23、*如果 String s2=new String(abc);会在内存中再生成一个abc对象那么将第一次将输出!=如果要想输出=把(s1=s2)改成(s1.equals(s2)=只能判断基本类型的值和引用类型的地址相等不相等equals方法可以判断引用类型的值相等不相等。*/if(s1=s2)/地址相等的判断(=);else(!=);,实例分析 6(续二),s2=s2+d;/改变对象abc的值if(s1=s2)/地址相等的判断,如果输出!=说明s2的地址改变了。(=);else(!=);编译和运行的结果为:=!=,6 集合类的使用,收集API收集(或容器)是代表一个对象组的单个对象,其它对象被认
24、为是它的元素。收集用于处理多种类型对象的问题,所有的类型都有一个特殊的种类(也就是说,它们都是从一个共同父类继承来的)。Java编程语言支持收集类Vector,Bits,Stack,Hashtable,LinkedList等等。例如,Stack实现后进先出(LIFO)的顺序,Hashtable提供一个相关的对象数组。收集可用于保存,处理Object类型的对象。这允许在收集中贮存任何对象。它还可以,在使用对象前、从收集中检索到它之后,使用正确的类型转换为我们所需要的对象类型。,6 集合类的使用(续一),收集API典型地由将对象保持为下述情况的接口而组成:(Collection)收集-没有具体顺序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 文本 应用 教学
链接地址:https://www.31ppt.com/p-6262547.html