• 86.00 KB
  • 2022-04-22 11:47:28 发布

Java习题答案_太原理工大学软件工程.doc

  • 14页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'太原理工大学·Java语言程序设计第1章习题解答1.Java语言有那些特点?答:Java语言的特点包括:平台无关性、面向对象、简单性、安全性、分布式、健壮性、解释型、多线程。2.为什么说Java是结构中立的,具有跨平台特性?答:无论哪种编程语言编写的程序最终都需要操作系统和处理器来完成程序的运行,平台无关性是指软件的运行不因操作系统、处理器的变化导致程序无法运行或出现运行错误。以C++程序为例,C++编译器针对源程序所在平台进行编译、连接,然后生成机器指令,这样就无法保证C++编译器产生的可执行文件在所有平台上都被正确执行。如果更换了平台,可能需要修改源程序,并针对新的平台重新编译源程序。相反,Java源代码不会针对一个特定平台进行编译,而是生成一种字节码中间文件(class文件),这种文件是平台无关且体系结构中立的。也就是说,无论一个Java程序是在Windows、Solaris、Linux还是其他具有Java编译器的操作系统下编译,作为编译结果的字节码文件都是相同的,都可以在任何具有Java虚拟机(JVM)的计算机上运行。JVM能够识别这些字节码文件,JVM将字节码文件进行转换,使之能够在不同平台上运行。任何操作系统只要安装了JVM,就可以解释并执行这种与体系结构无关的字节码文件,实现了跨平台。跨平台特性保证了Java的可移植性,任何Java源程序都可以移植到其他平台上。除此之外,Java的数据类型与机器无关,原始数据类型存储方式是固定的,避开了移植时可能产生的问题。例如,在任何机器上,Java的整型都是32位的,而C++中整型的存储依赖于目标计算机。另外Java的字符串采用标准的Unicode格式保存,也保证了Java的可移植性。3.简述Java的3种主要平台,这些适合开发那种应用?答:Java的开发平台(JDK)是开发人员用来构建Java应用程序的软件包,它包括:Java虚拟机(JVM)、Java编译器(javac)、Java归档(jar)实用程序、Java文档(javadoc)实用程序等。目前,Java的运行平台主要分为下列3个版本。(1)Java标准版Java标准版即JavaSE,曾被称为J2SE。Java SE提供了标准的JDK开发平台,利用该平台可以开发桌面应用程序、低端的服务器应用程序以及JavaApplet程序。学习Java应当从JavaSE开始,本书主要介绍JavaSE。(2)Java微型版Java微型版即JavaME,曾被称为J2ME。JavaME是一种很小的Java运行环境,用于嵌入式的消费产品中,例如手机、平板电脑和各种轻量智能设备等。(3)Java企业版Java企业版即JavaEE,曾被称为J2EE。可以构建企业级的服务应用。JavaEE平台包含了JavaSE,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。4.什么是JDK、JRE、JVM,简述三者之间的关系。答:Java的开发平台(JDK)是开发人员用来构建Java应用程序的软件包,它包括:Java虚拟机(JVM)、Java编译器(javac)、Java归档(jar)实用程序、Java文档(javadoc)实用程序等。所谓的Java运行环境(JRE)是JDK的子集,包括JVM、运行时类库和执行Java字节码所需要的Java应用程序启动器,但省略了Java编译器等开发工具。如果只需要运行Java而不需要开发Java程序,则不需要完全安装JDK,只选择安装JRE即可。 第2章习题解答1.安装JDK开发运行环境:从官方网站下载最新版的JDK安装软件,安装JDK软件。答:JDK开发运行环境的安装大致有三步,一是下载JDK安装软件,二是安装JDK软件,三是确认JDK是否正确安装。建议从官方网站下载JDK软件。详细安装过程略。2.安装集成开发环境Eclipse:从官方网站下载最新版的Eclipse软件,将其解压缩到适当的文件夹中,运行Eclipse并配置其所需要的Java运行环境,创建workspace文件夹,创建一个JavaApplication项目并编写简单的Java程序,执行该程序验证安装过程的正确性。答:安装集成开发环境Eclipse大致有三步,一是下载Eclipse软件(有多种版本可供选择,根据实际情况或需要下载必要的版本),二是安装Eclipse软件(通常只需要将压缩软件解压后放在适当的文件夹下即可),三是创建workspace文件夹用于存放Java程序。建议从官方网站下载Eclipse软件。详细安装过程略。3.从网络上查找一个感兴趣的Java应用程序,在Eclipse开发环境中编辑调试运行该程序。答:有关过程略。4.简述建立Java有关软件开发运行环境的主要步骤。答:建立Java有关软件开发运行的主要步骤有:一是下载安装JDK;二是下载安装Eclipse或netbeansws等这样的集成开发环境;三是运行集成开发环境,建立Java项目,编写Java程序,调试运行。最后,还需要考虑开发好的程序的部署和运行。5.从官方网站下载《TheJava™LanguageSpecification》(JavaSE7Edition),并打开阅读该文档。答:在线问答的网址是http://docs.oracle.com/javase/specs/jls/se7/html/。下载PDF文档的网址是ht3tp://docs.oracle.com/javase/specs/。6.编写一个简单的JavaApplet程序,并通过浏览器显示其输出结果。答:参考教科书中相关的内容编写一个简单的JavaApplet程序。具体程序略。7. 安装集成开发环境NetBeans:从官方网站下载最新版的NetBeans软件并安装,运行NetBeans,创建一个JavaApplication项目并编写简单的Java程序,执行该程序验证安装过程的正确性。答:参考教科书中的相关内容编写Java程序。具体程序略。8.从网络上查找一个感兴趣的Java应用程序,在NetBeans开发环境中编辑调试运行该程序。答:参考教科书中有关的内容,编写程序。具体程序略。9.在【例2-3】的基础上,对矩形类增加一个构造函数,使得能够用一个坐标点、矩形长度、矩形宽度以及方向(包括X方向和Y方向,其值为1或-1)构造一个实例。编写测试类进行测试,确认程序的正确性。答:编写构筑函数的程序如下:/*构造函数之三:用一个坐标点的值和矩阵长度和宽度以及方向进行矩阵的初始化*/publicRectangle(doublex1,doubley1,doublelength,doublewidth,intx_direct,inty_direct){this.point1=newPoint(x1,y1);this.point2=newPoint(x1+length*x_direct,y1+width*y_direct);} 第3章习题解答1.Java语言的注释有哪几种?分别给出一个例子。答:Java语言的注释有3种,分别是单行注释、多行注释和文档注释。单行注释的例子如下:publicstaticPointorigin=newPoint(0,0);//类初始化时,创建一个原点实例多行注释的例子如下:/*类初始化时,创建一个原点实例*/publicstaticPointorigin=newPoint(0,0);文档注释的例子如下:/****@类名:Point*@类简介:坐标点类,可以初始化其坐标x和y。*@编程人:林福平*@编程日期:2012-8-9*@修改日期:2012-8-10**/2.Java语言中分隔符有哪几种?空白符有哪些?答:Java语言中的分隔符有空白符、注释和普通分隔符三种。Java语言中的空白符(WhiteSpace)包括空格(SP,space)、制表符(‘t’,Tab键)、走纸换页(‘f’)、回车(‘r’)和换行(‘n’)。3.简述标识符的用途。下列字符串中,哪些是标识符?PIx2-lengtha+b_bytes$longMIN_VALUE答:Java语言中的标识符用于对类、方法、变量、类型、数组和文件等进行命名。上述字符串中,以下这些是Java语言的标识符:PIx2_bytes$longMIN_VALUE4.下列字符串中,哪些是关键字? trueforintnull$float_double答:上述字符串中,以下这些是Java语言的关键字:trueforintnull5.Java语言的基本数据类型分为那几大类?答:Java语言的基本数据类型分为数值类型(包括整数类型和浮点类型)、字符类型(char)和布尔类型(Boolean)。整数类型有byte、short、int和long。浮点类型有float和double。6.编写一个简单的Java程序,验证带有下划线(_)的常量是否符合语法,同时给出一个十六进制形式浮点数常量验证它是否符合语法。答:根据《Java语言规范》(《TheJava™LanguageSpecificationJavaSE7Edition》)一书的语法规定,常量中可以使用下划线(_),并且允许使用十六进制浮点数的。但是,实际使用中由于难以理解,通常情况下应该避免使用。例子程序如下:publicclassTestJava{publicstaticfinaldoubleX123=0x1_2_3.0p+0;publicstaticvoidmain(String[]args){System.out.println(X123);}}该程序运行结果如下:291.07.阅读以下Java语言程序的片段,写出程序输出结果:inti=1928;do{System.out.println(i);i=i/10;}while(i>0);程序运行结果如下:13927818.阅读以下Java语言程序的片段,写出程序输出结果: inti=1928;do{System.out.println(i);i=i/10;}while(i>0);程序运行结果如下:19281921919.用Java语言编写程序,计算输入的两个整数的最大公约数(GCD)。采用经典的Euclid算法,方法是:用变量m和n存储两个数的值,如果n为0,程序结束,m的值为最大公约数;否则计算m除以n的余数,把n保存到m中,并且把余数保存到n。重复这个过程,每次都先判定n是否为0。答:编写程序如下(程序中,变量m和n的值是给定的,要使得程序具有通用性,可以将其改为运行时输入):publicclassTestJava{publicstaticvoidmain(String[]args){intm=420;intn=98;while(n!=0){inttemp=m%n;m=n;n=temp;}System.out.println(m);}}程序运行结果是14。10.用Java语言编写程序,然后对用户输入的一个分数(分别输入分子和分母)进行约分,并且输出约分后的分数(分别输出分子和分母)。例如输入分子为6并且分母为12,那么输出结果为1/2。 答:对于输入的分子和分母,求出其最大公约数,用最大公约数来除这两个数就得到约分的结果。程序设计如下:publicclassTestJava{publicstaticvoidmain(String[]args){Scannernumerator=newScanner(System.in);Scannerdenominator=newScanner(System.in);intm=numerator.nextInt();intn=denominator.nextInt();while(n!=0){inttemp=m%n;m=n;n=temp;}System.out.println(numerator.nextInt()/m+"/"+denominator.nextInt()/m);}}在输入的分子和分母分别98和420的情况下,程序运行结果是7/30。11.用Java语言编写程序,计算e=1+1/1!+2/2!+……+n/n!。要求e值精确到小数点第5位。答:采用逼近法计算e,首先计算至第i项和第i+1项之和,比较它们的差值,满足精确到小数点第5位(差值<0.00001),即得到所求的e。程序设计如下:publicclassTestJava{publicstaticvoidmain(String[]args){doubleei;doubleei1=1;i=1;doublefactorial=1;do{ei=ei1;factorial*=i;ei1+=1/factorial;i++;}while(Math.abs(ei1-ei)>0.00001);System.out.println(ei1);}}程序运行结果是2.7182815255731922。 importjava.io.*;importjava.util.Scanner;publicclassXt9_11_BuffereStream{publicstaticvoidmain(String[]args)throwsIOException{Stringfilename="",str;Scannerscan=newScanner(System.in);System.out.print("输入文件名:");filename=scan.next();FileReaderfin=newFileReader(filename);//打开文本文件读BufferedReaderbin=newBufferedReader(fin);//字符流转换为缓冲流intcount=0;while((str=bin.readLine())!=null&&count<10){//从文件读一行字符System.out.println(str);//显示count++;}bin.close();}} 第4章习题解答1.声明一个数组,保存一个学生的数学、语文、英语、物理、化学等课程的成绩,编写一个程序,计算5门课程的平均成绩,精确到0.1分,成绩值从键盘录入。importjava.util.Scanner;publicclassXT_1_score{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubdoublescore[]=newdouble[5];System.out.println("请分别输入数学、语文、英语、物理、化学的成绩(数字之间用空格格开):");doublesum=0,average=0;Scannerin=newScanner(System.in);inti;for(i=0;i<5;i++)score[i]=in.nextDouble();for(i=0;i<5;i++)sum+=score[i];average=sum/5;System.out.println("平均成绩为:"+String.format("%.1f",average));}}2.编程实现统计50名学生的百分制成绩中各分数段的学生人数,即:分别统计出100分、90-99分、80-89分、70-79分、60-69分、不及格的学生人数。importjava.util.Scanner;publicclassXT_2_score_sore{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubdoublescore[]=newdouble[50];inta=0,b=0,c=0,d=0,e=0,f=0,i;System.out.println("请依次输入50名学生的成绩(用空格隔开):");Scannerbr=newScanner(System.in);for(i=0;i<50;i++)score[i]=br.nextDouble();for(i=0;i<50;i++){if(score[i]==100)a++;if(score[i]>=90&&score[i]<=99) b++;if(score[i]>=80&&score[i]<=89)c++;if(score[i]>=70&&score[i]<=79)d++;if(score[i]>=60&&score[i]<=69)e++;if(score[i]<60)f++;}System.out.println("成绩为100分的个数:"+a);System.out.println("成绩为90-99分的个数:"+b);System.out.println("成绩为80-89分的个数:"+c);System.out.println("成绩为70-79分的个数:"+d);System.out.println("成绩为60-69分的个数:"+e);System.out.println("成绩为不及格的个数:"+f);}}1.编写一个程序,实现打印输出字符串数组中最大值和最小值。提示:按照字典顺序决定字符串的最大值和最小值,字典中排在后面的大于前面的。importjava.util.Arrays;importjava.util.Scanner;classXT_3_string{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println("请输入字符串数组中的字符:");Scannerin=newScanner(System.in);Stringstr=in.next();chararray[]=newchar[str.length()];for(inti=0;i="a"&&array<="z")||(array>="A"&&array<="Z"))a++;if(array>="0"&&array<="9")b++;if(array=="")c++;}System.out.println("字母的个数:"+a);System.out.println("数字的个数:"+b);System.out.println("空格的个数:"+c);}}1.编程实现将数组中的值按逆序重新存放,例如:原来顺序是9、7、4、6,要求改为6、4、7、9。importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Scanner;publicclassXT_5_nixu{publicstaticvoidmain(String[]args)throwsIOException{//TODOAuto-generatedmethodstubSystem.out.println("请输入数组的长度:");BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringm;m=br.readLine();intarray[]=newint[Integer.parseInt(m)];System.out.println("请输入数组的元素(用空格隔开):");Scannerin=newScanner(System.in); for(inti=0;i=0;i--)System.out.print(array[i]+"");}}1.编写程序,完成打印输出杨辉三角形(要求输出的格式应在屏幕的居中位置)。杨辉三角形的格式如下:11112113311464115101051161520156117213535217118285670562881193684126126843691importjava.util.Scanner;publicclassXT_6_YangHSJ{publicstaticvoidyanghui(inta[][],intr){for(inti=0;i0;k--)System.out.print("");for(intj=0;j