JAVA实验7-9+答案
更新时间:2024-01-10 05:41:01 阅读量: 教育文库 文档下载
- java实验报告心得体会推荐度:
- 相关推荐
实验7
1. 编一个程序,包含以下文件。
(1)Shape.java文件,在该文件中定义接口Shape,该接口在shape包中。 属性:PI。
方法:求面积的方法area()。
(2)Circle.java文件,在该文件中定义圆类Circle,该类在circle包中,实现Shape接口。 属性:圆半径radius。
方法:构造方法;实现接口中求面积方法area();求周长方法perimeter()。 (3)“Cylinder.java”文件,在该文件中定义圆柱体类Cylinder,该类口在cylinder包中,
继承圆类。
属性:圆柱体高度height。
方法:构造方法;求表面积方法area();求体积方法volume()。
(4)X5_3_6.java文件,在该文件中定义主类X5_3_6,该类在默认包中,其中包含主方法main(),在主方法中创建两个圆类对象cir1和cir2,具体尺寸自己确定,并显示圆的面积和周长;再创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2的底圆的面积和周长以及它们各自的体积和表面积。
【编程分析】本题主要考察接口、包、继承、封装等问题。编程步骤如下:
第一步:首先创建p1包,在其中创建Shape接口
// Shape.java文件
package p1; // 创建p1包 public interface Shape{ // 定义Shape接口 … }
第二步:创建Circle类和Cylinder类,它们都定义在p2包中。
// Circle.java文件
package p2; // 创建p2包 import p1.*;
public class Circle implements Shape{ // 定义实现Shape接口的Circle类 … }
// Cylinder.java文件 package p2;
public class Cylinder extends Circle{ … }
// 创建继承Circle类的Cylinder类
第三步:创建主类,在其中的main()方法中创建对象,实现相应的功能。
// X5_3_6.java文件 package p3; import p2.*;
public class X5_3_6 { // 定义主类 public static void main(String[] args) { … } }
【参考程序】
// X5_3_6.java文件 package p3; import p2.*;
public class X5_3_6 { // 定义主类 public static void main(String[] args) { Circle cir1 = new Circle(120.5); Circle cir2 = new Circle(183.8); System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ Cylinder cy1 = new Cylinder(27.3,32.7); Cylinder cy2 = new Cylinder(133.5,155.8); System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ } }
// Shape.java文件
package p1; // 创建p1包 public interface Shape{ // 定义Shape接口 double PI=Math.PI;
double area(); // 求面积方法 }
// Circle.java文件
package p2; // 创建p2包 import p1.*;
public class Circle implements Shape{ // 定义实现Shape接口的Circle类 double radius; // 半径 public Circle(double r){ radius = r; } public double area(){ // 实现Shape接口中的方法(这是必须的) return PI*radius*radius; } public double perimeter(){ // 定义求圆周长的方法 return 2*PI*radius; } }
// Cylinder.java文件 package p2;
public class Cylinder extends Circle{ // 创建继承Circle类的Cylinder类
}
double height;
public Cylinder(double r,double h){ super(r); height = h; }
public double area(){ return 2*PI*radius*radius+2*PI*radius*height; }
public double volume(){ return PI*radius*radius*height; }
2)定义一个接口OneToN,在接口中包含一个抽象方法disp()。定义Sum和Pro类,并分别用不同代码实现ONeToN的disp()方法,在Sum的方法中计算1~n的和,在Pro的方法中计算1~n的乘积 interface OneToN { public void disp(int n); }
class Sum implements OneToN { public void disp(int n) { int sum=0; for(int i=1;i<=n;i++) { sum=sum+i; } System.out.println(sum); } }
class Pro implements OneToN { public void disp(int n) { long pro=1; for(int i=1;i<=n;i++) { pro=pro*i; } System.out.println(pro); } }
public class interfaceTest {
public static void main(String[] args) { // TODO code application logic here Sum x=new Sum(); x.disp(100); } }
3)改错,上传正确答案,并以注释形式给出错误原因 class SuperClass { public SuperClass(String msg) { System.out.println(\}
class SubClass extends SuperClass { public SubClass(String msg) { Super(msg); //父类没有无参的构造方法,应采用super显示调用父类的构造方法 System.out.println(\ } }
public class Test1 {
public static void main(String[] args) {
SubClass descendent = new SubClass(); } }
4) 利用多态性编程,创建一个抽象类shape类,定义一个函数Area为求面积的公共方法,再定义Triangle,Rectangle和circle类,实现computerArea方法;增加display方法,显示name和area,并在Triangle,Rectangle和circle类覆盖该方法,并为每个类增加自己的构造方法;在主类中创建不同对象,求得不同形状的面积。 答案略。
实验8
一、选择题
1.关于异常的含义,下列描述中最正确的一个是( D )。 A.程序编译错误 B.程序语法错误 C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件 【解析】异常就是程序编译或运行时发生的异常事件。
2.自定义异常时,可以通过对下列哪一项进行继承?( C ) A.Error类 B.Applet类 C.Exception类及其子类 D.AssertionError类
【解析】自定义异常类时,该类必须继承Exception类及其子类。
3.对应try和catch子句的排列方式,下列哪一项是正确的?( A ) A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常 D.父类和子类不能同时出现在try语句块中 【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。
4.运行下面程序时,会产生什么异常?( A )
public class X7_1_4 {
public static void main(String[] args) { int x = 0; int y = 5/x; int[] z = {1,2,3,4}; int p = z[4]; } }
A.ArithmeticException B.NumberFormatException C.ArrayIndexOutOfBoundsException D.IOException
【解析】当程序执行到“int y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。
5.运行下面程序时,会产生什么异常?( C )
public class X7_1_5 {
public static void main(String[] args) { int[] z = {1,2,3,4}; int p = z[4]; int x = 0; int y = 5/x; } }
A.ArithmeticException B.NumberFormatException C.ArrayIndexOutOfBoundsException D.IOException
【解析】当程序执行到“int p = z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。 6.下列程序执行的结果是( B )。
public class X7_1_6 {
public static void main(String[] args) { try{ return; } finally{ System.out.println(\ } } }
A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译 【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。
7.下列代码中给出正确的在方法体内抛出异常的是( B )。 A.new throw Exception(\ B.throw new Exception(\C.throws IOException(); D.throws IOException; 【解析】在方法体内抛出异常时只能使用throw,而不能使用throws,另外,“new Exception(\
\”是创建一个异常,因此B是正确的。
8.下列描述了Java语言通过面相对象的方法进行异常处理的好处,请选出不在这些好处范围之内的一项( C )
A.把各种不同的异常事件进行分类,体现了良好的继承性 B.把错误处理代码从常规代码中分离出来 C.可以利用异常处理机制代替传统的控制流程
D.这种机制对具有动态运行特性的复杂程序提供了强有力的支持 【解析】异常处理机制不能代替传统的流程控制。
二、编程题
1.编写一个系统自动抛出的、系统自行处理的数组大小为负数的程序。
【编程分析】
当编写的程序中没有处理异常的语句时,系统会自动抛出异常,并自行进行处理。 【参考程序】
public class X7_3_1 {
public static void main(String[] args){ int[] a = new int[-5]; for(int i=0; i
【运行结果】
Exception in thread \ at X7_3_1.main(X7_3_1.java:3)
2.编写一个由throw抛出的、系统自行处理的数组下标越界的程序。 【编程分析】
当由throw抛出异常后,如果程序本身不进行异常处理,Java系统将采用默认的处理方式进行处理。 【参考程序】
import java.io.*;
public class X7_3_2 {
public static void main(String[] args)throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int[] a = new int[5]; int n = Integer.parseInt(br.readLine()); if(n>5) // 当输入的n值大于5时将由throw抛出异常 throw new ArrayIndexOutOfBoundsException(); System.out.println(\程序继续执行\ for(int i=0; i System.out.println(); } } 【运行结果】 8 Exception in thread \ at C1.main(C1.java:9) 3.编写一个系统自动抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。 【编程分析】 当在try语句块中出现分母为0的情况时,如果在catch参数中有ArithmeticException对象,则就能捕捉到该异常并进行处理;同样,当在try语句块中出现分母为数组下标越界的情况时,如果在catch参数中有ArrayIndexOutOfBoundsException对象,则就能捕捉到该异常并进行处理。 【参考程序】 import java.io.*; public class X7_3_3 { public static void main(String args[]) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println(\请输入两个整数:\ int a = Integer.parseInt( br.readLine()); int b = Integer.parseInt( br.readLine()); try{ // 当输入的b为0时,就会出现算术异常 System.out.println(a/b); } catch(ArithmeticException e){ // 捕捉算术异常并进行处理 System.out.println(\出现被0除的情况!\ } int c[] =new int[4], sum = 0; try{ // 当出现数组下标越界时就会抛出异常 for(int i = 0; i<5; i++) sum += c[i]; System.out.println( \ } catch(ArrayIndexOutOfBoundsException e){// 捕捉数组下标越界异常并处理 System.out.println(\数组下标越界!\ } } } 【运行结果】 请输入两个整数: 20 0 出现被0除的情况! 数组下标越界! 4.编写一个由throw抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。 【编程分析】 当在程序出现异常之前利用throw语句来抛出异常,可以做到防患于未然,提前进行异常处理,将由被动处理异常转变为主动防止异常发生。 【参考程序】 import java.io.*; public class X7_3_4 { public static void main(String args[]) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.println(\请输入两个整数:\int a = Integer.parseInt( br.readLine()); int b = Integer.parseInt( br.readLine()); try{ if(b==0) throw new ArithmeticException(\抛出算术异常\ System.out.println(a/b); } catch(ArithmeticException e){ e.printStackTrace(); System.out.println(\出现被0除的情况!\} int c[] ={1, 2, 3, 4}, sum = 0; try{ for(int i = 0; i<5; i++) { if(i >= 4) throw new ArrayIndexOutOfBoundsException(\抛出数组下标越界 sum += c[i]; System.out.println( \ } } catch(ArrayIndexOutOfBoundsException e){ e.printStackTrace(); System.out.println(\数组下标越界!\} 异常\ } } 5.自定义两个异常类NumberTooBigException和NumberTooSmallException,在其中定义各自的构造方法,分别打印输出“发生数字太大异常”和“发生数字太小异常”。然后在主类中定义一个带throws的方法numberException(int x),当x>100时通过throw抛出NumberTooBigException异常,当x<0时通过throw抛出NumberTooSmallException异常;最后在main()方法中调用该方法,实现从键盘中输入一个整数,如果输入的是负数,引发 NumberTooSmallException异常,如果输入的数大于100,引发。NumberTooBigException异常,否则输出“没有发生异常”。 【编程分析】本题主要考察自定义异常的方法。 第一步:定义异常类NumberTooBigException class NumberTooBigException extends Exception{ NumberTooBigException(){ super(\发生数字太大异常 \ } } 第二步:定义异常类NumberTooSmallException class NumberTooSmallException extends Exception{ NumberTooSmallException(){ super(\发生数字太小异常\ } } 第三步:在主类X7_3_5中定义numberException()方法。 public static void numberException(int x) throws NumberTooBigException, NumberTooSmallException{ if(x>100) throw new NumberTooBigException(); else if (x<0) throw new NumberTooSmallException(); else System.out.println(\没有异常发生\; } 第四步:在main()方法中调用numberException()方法并捕捉和处理由此方法引起的异常。 【参考程序】 import java.io.*; public class X7_3_5 { public static void main(String args[]) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); System.out.print(\请输入一个整数:\ int a = Integer.parseInt( br.readLine()); try{ numberException(a); }catch(NumberTooBigException e){ e.printStackTrace(); }catch(NumberTooSmallException e){ e.printStackTrace(); } } public static void numberException(int x) throws NumberTooBigException, NumberTooSmallException{ if(x>100) throw new NumberTooBigException(); else if (x<0) throw new NumberTooSmallException(); else System.out.println(\没有异常发生\; } } class NumberTooBigException extends Exception{ NumberTooBigException(){ super(\发生数字太大异常 \ } } class NumberTooSmallException extends Exception{ NumberTooSmallException(){ } 实验9 一、选择题 1.下列说法中错误的一项是( B )。 A.构件是一个可视化的能与用户在屏幕上交互的对象 B.构件能够独立显示出来 C.构件必须放在某个容器中才能正确显示 D.一个按钮可以是一个构件 【解析】构件不能独立显示,它必须放在某个容器中才能正确显示。 2.进行Java基本GUI设计需要用到的包是( C )。 A.java.io B.java.sql C.java.awt D.java.rmi 【解析】进行Java基本GUI设计需要用到的包是java.awt和javax.swing 3.Container是下列哪一个类的子类( D )? A.Graphics B.Window C.Applet D.Component 【解析】Container类是由Component类派生的。 4.java.awt.Frame的父类是( B )。 A.java.util.Window B.java.awt Window C.java.awt Panel D.java.awt.ScrollPane 【解析】java.awt.Frame的父类java.awt Window。 5.下列哪个方法可以将MenuBar加入Frame中( D )? A.setMenu() B.addMenuBar() C.add() D.setMenuBar() 【解析】可以将MenuBar加入Frame中的方法是setMenuBar()。 6.下列叙述中,错误的一项是( D )。 A.采用GridLayout布局,容器中的每个构件平均分配容器空间 B.采用GridLayout布局,容器中的每个构件形成一个网络状的布局 } super(\发生数字太小异常\
正在阅读:
JAVA实验7-9+答案01-10
基于C51单片机的烟雾报警器设计1211-19
2016年秋季版七年级道德与法治上册第一单元走进中学第三节拥有好心情教学设计湘教版10-11
2014年版SCI收录期刊影响因子情况汇总20140904-26
高层建筑沉降观测施工方案08-18
对司法行政机关警务督察的思考04-22
学前教育学考试大纲09-07
广告文案写作复习资料03-29
特殊使用类抗菌药物管理规定12-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 答案
- 实验
- JAVA
- 教育科研是教师的幸福之路
- 动植物检验检疫考试- 答案
- 六年级数学整理与复习练习题
- 2017年湖南省内审师《内部审计基础》:中小企业内部控制面临的问题考试试题
- 微型智能相机商业计划书
- 张家港100强企业
- 江苏环保厅危险废物经营许可证颁发情况表
- H3C中小企业解决方案
- 大学英语四六级语法整理
- VAR模型Eviews基本操作指引
- 中考数学专题复习第5讲:分式
- 公安局基层派出所业务用房建设项目投资申请报告及项目建议书word
- 鸦岗小学2017学年第一学期主题班会室内火灾逃生与自救方案、总结 602
- 2016年浙江省嘉兴一中实验学校八年级上学期期中物理试卷与答案
- 最新概率论与数理统计专业社会实践报告范文
- 组合电器安装技术交底
- 关于改革开放的口述史
- 2011世界休闲旅游大使总决赛指导手册
- 教育实习1教案分析
- 党组织党员信息填写和录入说明