您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 7基于文本的应用程序(2学时)-9
第7讲基于文本的应用程序命令行参数7.1命令行参数•命令行参数是在运行时传递给Java应用程序的参数。每个命令行参数放置在args数组中,其传递给staticmain方法。例如:publicstaticvoidmain(String[]args)程序示例:publicclassTestArgs{publicstaticvoidmain(String[]args){for(inti=0;iargs.length;i++)System.out.println(args[+i+]is:+args[i]);}}当运行:D:\javaTestArgsmyfirst这里my和first就是传递给main的参数。系统属性7.2系统属性在Java应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确定操作系统类型、用户JDK版本和用户工作目录等随工作平台变化的信息,来保证程序正确运行。一般情况下,可以利用JDK提供的系统属性类(Properties)中的方法,快速地获取工作环境信息。另外,程序开发人员还可以定义与应用程序相关的系统属性文件,在用户程序执行过程中动态地加载程序员定义的属性文件来控制程序运行。系统属性包括关于当前用户、Java运行时的当前版本和用来分隔文件路径名称的组成部分的字符的信息。System.getProperties()方法返回Properties对象。System.getProperty(String)方法返回表示名称为property值的字符串。System.getProperty(String,String)方法使您提供默认字符串值(第二个参数),其在如果名称为property不存在的情况下返回。控制台I/O7.3控制台I/O应用程序使用控制台I/O与用户进行交互。Java2SDK支持在java.lang.System类中具有三个公共变量的控制台I/O:变量System.out使您向标准输出写入。它是类型PrintStream的对象。变量System.in使您从标准输入读取。它是类型InputStream的对象。变量System.err使您向标准错误写入。它是类型PrintStream的对象。7.3.1标准输入输出1、标准输出(System.out)(1)print和println方法println将常量、变量或表达式的值输出到屏幕。可以有0个或1个参数。0个参数:则输出一回车换行,光标移动到下一行行首;1个参数:该参数可以是各种类型,结果都转换成相应的字符串类型输出。输出给定所有内容后,输出一个回车换行。例如:inti=3,j=4;System.out.println(i+j);//输出为:7System.out.println(“分别为”+i+j);//输出为:分别为34在参数输出时,“+”符号可以作为加运算符使用,也可以作为多个输出项的连接符号使用。print方法需要一个参数来输出,可用的参数类型与println相同,区别在于输出参数的值后不输出回车换行。(2)printf和format格式输出方法•要控制输出数据的格式,可在这两个方法的参数中对每一输出项,使用%格式符进行格式控制。例如:System.out.printf(a=%d\tb=%f\tc=%c,a,b,c);或:System.out.format(a=%d\tb=%f\tc=%c,a,b,c);•为了能得到正确输出的数据和格式,不同类型的输出项应使用不同的格式符来进行格式控制输出。适用于基本类型和字符串类型输出的常用格式符有:%b布尔型数据%c字符%d十进制整数%f十进制实数%s字符串%n输出换行符%e或%g科学记数法形式的十进制实数•第一个参数为输出格式,字符串形式;后面参数列出要输出的数据变量。2、标准输入(System.in)(1)read方法•read()从键盘输入整数值在0~255之间的byte值(int类型)。若程序运行时需要从键盘输入其他类型的数据,则需要使用Java提供的输入/输出功能。不论需从键盘输入何种类型的数据,Java从键盘接收数据都是以字符串的形式进行,再根据实际数据的需要进行类型转换。•应用本方法时要使用Java的异常处理机制。例、键盘输入一个字符,并输出它在Unicode字符集中的前一个字符和后一个字符:importjava.io.*;//引入java.io包classCharDemo{publicstaticvoidmain(Stringargs[]){charc,c1,c2;System.out.println(请输入一个字符,并按回车键!);try{c=(char)System.in.read();//输入字符c1=(char)(c-1);c2=(char)(c+1);System.out.println(:+c1);System.out.println(:+c2);}catch(IOExceptione){e.printStackTrace();//打印异常信息}}}(2)使用next方法•若使用Java提供java.util.scanner类中的各种next方法,可从键盘输入各种基本类型和字符串类型的数据。不论需从键盘输入何种类型的数据,Java从键盘接收数据都是以字符串的形式进行,next方法要根据输入数据的类型来选用。有nextByte、nextInt、nextShort、nextLong、nextFloat、nextDouble、nextBoolean和next(以空格和回车为结束标记的字符串输入)等适用于不同类型数据输入的方法。使用next方法进行键盘输入的例子如下。例、从键盘输入三角形的三个边长,求这个三角形的面积:importjava.util.Scanner;classTriArea{publicstaticvoidmain(Stringargs[]){System.out.printf(请输入三角形的三边长:);Scannersc=newScanner(System.in);doublea=sc.nextDouble();doubleb=sc.nextDouble();doublec=sc.nextDouble();doublet=(a+b+c)/2.0;doubles=Math.sqrt(t*(t-a)*(t-b)*(t-c));System.out.format(三角形的面积为%f\n,s);//Strings=sc.next();//System.out.format(三角形的面积为%s\n,s);}}7.3.2对话框输入输出1、使用showMessageDialog(输出信息对话框)方法•Java中的JOptionPane.showMessageDialog方法是用对话框的形式来进行输出,支持一个输出项,在输出内容较多时,也可用字符串连接的形式来输出。importjavax.swing.JOptionPane;importstaticjava.lang.Math.*;classDialogDemo{publicstaticvoidmain(Stringargs[]){Strings1=sin30度的值=;s1=s1+sin(PI*30/180);s1=s1+\ncos30度的值=;s1=s1+cos(PI*30/180);JOptionPane.showMessageDialog(null,s1);}}2.使用showInputDialog方法输入信息使用Java提供的javax.swing.JOptionPane类中的showInputDialog方法,可从输入信息对话框中输入一个字符串对象。需要时,可进行类型转换,得到所需类型的输入数据。例、使用对话框进行程序的输入输出。输入一个代表年号的整数,求这一年的元旦是星期几?元旦是星期几的计算公式(设年号为y,按整数运算):s=y+(y-1)/4-(y-1)/100+(y-1)/400;s除以7的余数即为星期数,余数为0表示星期日。importjavax.swing.JOptionPane;classYuanDan{publicstaticvoidmain(Stringargs[]){ints,y;y=Integer.parseInt(JOptionPane.showInputDialog(请输入一个年号:));s=y+(y-1)/4-(y-1)/100+(y-1)/400;s=s%7;JOptionPane.showMessageDialog(null,y+年的元旦是星期+s);}}//parseInt函数把参数解析为int类型•程序运行的输入输出界面及结果见右图。集合API7.4集合API•java.util包提供了集合(set)、列表(list)和映射(map)等工具。集合(collection)是表示一组称之为其元素的对象的单个对象。集合API包含将对象分组为以下之一的接口:Collection:一组称之为元素的对象;任何特定排序(缺少)和允许重复由每个实现指定。Set:无序的集合;不允许重复。List:有序的集合;允许重复。•7.4.1集合的提出•需要能够存储一组数据的容器,虽然数组可以实现,但是如果我们需要存储的数据的个数多少并不确定。这一点上,如果使用数组来存储的话,就显得十分的笨拙。•比如说:我们需要在容器里面存储某个应用系统的当前的所有的在线用户信息,而当前的在线用户信息是时刻都可能在变化的。•为解决诸如此类问题,Java里面就设计了容器集合,不同的容器集合以不同的格式保存对象。•7.4.2集合框架集合是由一组用来操作对象的接口组成。不同接口描述不同类型的组。在很大程度上,理解了接口,就理解了框架。框架分类:•Collection–对象之间没有指定的顺序,允许重复元素。•Set–对象之间没有指定的顺序,不允许重复元素•List–对象之间有指定的顺序,允许重复元素,并引入位置下标。•Map–接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。Map接口既不继承Set也不继承Collection。Java2框架还引入了六个集合实现,如下表所示。接口实现历史集合类SetHashSetTreeSetListArrayListVectorLinkedListStackMapHashMapHashtableTreeMapProperties•7.4.3Set集合•Java中Set的概念和数学中的集合(set)一致,都表示一个集内可以存放的元素是不能重复的。•Set接口继承Collection接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的Set实现类依赖添加的对象的equals()方法来检查等同性。importjava.util.*;publicclassSetExample{publicstaticvoidmain(String[]args){Setset=newHashSet();set.add(one);set.add(second);set.add(3rd);set.add(newInteger(4));set.add(newFloat(5.0F));set.add(second);set.add(newInteger(4));System.out.println(set);}}•7.4.4List集合•List是容器的一种,表示列表的意思。当我们不知道存储的数据有多少的情况,我们就可以使用List来完成存储数据的工作。•List就是列表的意思,它是Collection的一种,即继承了Collection接口,以定义一个允许重复项的有序集合。•该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。importjava.util.*;publicclassListExample{p
本文标题:7基于文本的应用程序(2学时)-9
链接地址:https://www.777doc.com/doc-2896911 .html