第一大题、分析(共14小题,满分100分)
1 、(9分)
设计一个专门用于处理实际项目中提供的数据格式不正确问题的编译异常类型(checkedException),要求在使用输入的内容时,必须对数据进行检查,如果数据不正确,利用异常处理机制进行消息传递。假设某个实际应用在一个类型定义中有一个成员方法需要接收文件名为java源文件,请你写出对于文件名进行判定的一段代码。你需要完成的设计如下:
(1)实际应用需要对提供的Java源文件进行编译和运行,请你设计一个命名为NOtJavaFileException的类型,异常消息内容为"非Java源文件";
(2)完善下面FileTool类型中文件编译方法fileCompile的定义(异常所在的包不考虑);
public class FileTool{
public static void fileCompile(Stirng filename){
//仅写出文件格式判定代码段,其他处理代码不需要完成
}
(3)设计一个程序FileCmpTest,完成对文件名为“HelloWorld.java”和“HelloWorld.class”的文件进行编译,要求使用try-catch方式处理异常。
(4)写出程序的运行结果。
参考答案:
(1)(30%分)异常类型设计如下:
public class NotJavaFileException extends Exception{
public NotJavaFileException(){
super("非Java源文件");
}
}
(2)(30%分)类型设计如下:
public class FileTool{
public static void fileCompile(String filename)throws NotJavaFileException{
if(!filename.endsWith(".java")){
throw new NotJavaFileException();
}}
}
(3)(30%分)FileCmpTest设计如下:
public class FileCmpTest{
public static void main(String[] args){
String file1="";
String file2="";
try{
FileTool.fileCompile(file1);
fileToll.fileCompile(file2);
}catch(NotJavaFileException e){
System.out.println(e.getMessage());
}}
}
(4)(10%分)程序的运行结果:根据处理方法不同结果不一致,有异常输出即可。
2 、(5分)
有文件Main.java代码如下:
//源文件名为Main.java
public class Main
{
public static void main(String[] args)
{
Person p = new Student( );
p.work();
p.work(100);
}
}
//类Person定义
class Person{
protected int age;
public Base(int age){
this.age = age;
}
public void work( ){
System.out.println("Person working…");
}
}
//类Student定义
class Student extends Person{
private static float var1 = 10;
private static float var2 = 20;
void work( ){
System.out.println("Student studying…");
}
void work(String subject){
System.out.println("Student studying"+subject);
}
static void f1(String s){
this.var1 = super.age;
try{
var2 = Integer.parseInt(s);
}catch(RuntimeException e){
e.printStackTrace( );
}catch(NumberFormatException e){
e.printStackTrace( );
}
}
}
请你上机调试分析代码,指出代码中主要错误,并修改过来,不要修改Main类中的代码,仅修改Person和Student的定义代码。
参考答案:
1)类Person的构造函数名错误,将Base改为Person;
2)将子类Student的重写方法work的访问权限改为public ,并将void work(String subject)改为void work(int subject);
3) 将超类Person增加一个重载方法public void work(int x)方法;
4)类方法中不能使用非静态成员super.age,将该行代码删除;
5)异常类型捕捉次序有问题,应该先catch特性异常再catch超类的异常,修改方法为将两个catch语句的位置交互。
编写一个Java GUI应用程序,窗口标题为“GridLayout”,窗口布局如下图A所示,在图A窗口中单击任意一个Button,网格的划分方式会变化为图B;在图B窗口中单击任意一个Button,网格的划分方式会变化为图A。
图A 图B
参考答案:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class MyWindows extends JFrame implements ActionListener{JButton[] jbts=new JButton[6]; JPanel p1;boolean isfirst=false;String[] bname={"ont","two","three","four","five","six"};public MyWindows(){super("GridLayout");isfirst=true;p1=new JPanel();p1.setLayout(new GridLayout(3,2));for(int i=0;i<6;i++){jbts[i]=new JButton(bname[i]); jbts[i].addActionListener(this);p1.add(jbts[i]); }this.getContentPane().add(p1);this.setBounds(300,300,200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(isfirst){p1=new JPanel();p1.setLayout(new GridLayout(3,2));for(int i=0;i<6;i++)p1.add(jbts[i]); this.getContentPane().add(p1) ; isfirst=false; this.validate(); }else{isfirst=true;p1=new JPanel();p1.setLayout(new GridLayout(2,3));for(int i=0;i<6;i++)p1.add(jbts[i]); this.getContentPane().add(p1) ; this.validate(); }}public static void main(String[] args) {new MyWindows();}
}
以下是使用FileInputStream类和FileOutputStream类实现复制文件的功能。请你阅读以下代码,并将空白处的缺失代码填写完整。
import java.io.*;
class Test2
{
public static void main(String[] args)
{
String file1,file2;
int ch=0;
file1="readme.txt";
file2="readme.bak";
try{
FileInputStream fis=new (1) ;
(2) fos=new FileOutputStream(file2);
int size= (3) ;
System.out.println("字节有效数:"+size);
while((ch=fis.read()) 1=-1){
System.out.write(ch);
fos.write(ch);
}
fis.close();
fos.close();
}catch( (4) e){
System.out.println(e.toString());
}
}
}
参考答案:
(1) FileInputStream(file1)
(2)FileOutputStream或OutputStream
(3)fis.available()
(4)IOException或Exception
设计一个复数类,复数类的定义要求如下:
public class Complex {
Complex(){ } //无参构造方法
Complex(double x,double y){ //带参构造方法
}
Complex add(Complex c){ //两复数相加
}
Complex minus(Complex c){ //两复数相减
}
Complex multi(Complex c){ //两复数相乘
}
Complex divide(Complex c){ //两复数相除
}
void print(){ //输出复数的a+bi形式
}
}
完成其加、减、乘、除等运算。并测试输出3-49i与8+91i的加、减、乘、除等运算结果。
提示:两个复数的乘除运算结果见下图.
![](/assets/blank.gif)
参考答案:
import java.util.*;class Complex
{double a,b;Complex(){};Complex(double x,double y) { a=x;b=y;}Complex add(Complex c)//加法运算{Complex p = new Complex();p.a=a+c.a;p.b=b+c.b;return p;}Complex minus(Complex c)//减法运算{Complex p = new Complex();p.a=a-c.a;p.b=b-c.b;return p;}Complex multi(Complex c)//乘法运算{Complex p = new Complex();p.a=a*c.a-b*c.b;p.b=b*c.a-a*c.b;return p;}Complex divide(Complex c)//除法运算{Complex p = new Complex();try {p.a=(a*c.a+b*c.b)/(c.a*c.a+c.b*c.b);p.b=(b*c.a+a*c.b)/(c.a*c.a+c.b*c.b);} catch (Exception e) {System.out.println("你除数为0了!");}return p;}void print()//将其输出结果转为a+bi形式{if(b>0) {if(a!=0)System.out.println(a+"+"+b+"i");elseSystem.out.println(b+"i");}if(b==0)System.out.println(a);if(b<0) {if(a==0)System.out.println(b+"i");elseSystem.out.println(a+""+b+"i");}}
}
设计一个Shape接口和他的两个实现类Square和Circle,要求如下:
(1)Shape接口定义一个方法area(),方法接收一个double类型的参数,返回一个double类型的结果。
(2)Square和Circle中实现Shape接口,分别求正方形和圆形的面积。
在测试类中完成创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积,圆周率使用Math类中的PI值。
参考答案:
class Test {public static void main(String[] args) {Square sq = new Square();System.out.println("边长为2的正方形面积为"+sq.area(2));Circle cr = new Circle();System.out.println("半径为3的圆形面积为"+cr.area(3));}
}interface Shape {double area(double x);
}class Square implements Shape {public double area(double x){return x*x;}
}class Circle implements Shape{public double area(double r) {return Math.PI*r*r;}
}
(1) 学生类 Student 属性有:
id : long型,代表学号
name : String类对象,代表姓名
age : int型,代表年龄
sex : boolen型,代表性别(其中:true表示男,false表示女)
phone : String类对象,代表联系电话
(2) 学生类 Student的方法有:
Student(long i , String n , int a , boolean s ,String p) :有参构造函数,形参表中的参数分别初始化学号、姓名、年龄、性别和联系电话。
int getAge() ( ) : 获取年龄作为方法的返回值。
boolean getSex( ) ( ) : 获取性别作为方法的返回值。
String getPhone ( ) : 获取联系电话作为方法的返回值。
public String toString( ) : 以 姓名:联系电话 的形式作为方法的返回值。
请输入答案:
参考答案:
class Student {long id; String name;int age;boolean sex;String phone;Student(long i, String n, int a, boolean s, String p){id = i; name = n;age = a;sex = s;phone = p;}int getAge() {return age;} boolean getSex() {return sex;} String getPhone() {return phone;}public String toString() {return name+" : "+phone;}
}
8 、(8分)
(1)在接口Shape中定义一个方法area(),方法无参数,返回一个double类型的结果,该结果表示图形的面积。
(2)Circle中实现Shape接口,求圆形的面积,设计该类型的成员变量和给成员变量赋值的构造方法。
(3)设计测试类,完成创建Circle对象,计算半径为3的圆形面积。
请输入答案:
参考答案:
(1)(20%分)接口Shape设计如下:
public interface Shape {
public double area();
}
(2)(60%分)实现类型设计如下:public class Circle implements Shape{
double r;
public Circle(double r){
this.r=r;
}
public double area(){
return Math.PI*r*r;
}
}(3)(20%分)测试类设计如下:
public class Test{
public static void main(String[] args){
Circle circle=new Circle(3);
System.out.println("半径为3的园面积为:"+circle.area());
}
}
根据下面提供的手机接口和电话卡抽象类,以及苹果手机类型,请你设计一个使用移动网络的电话卡MobileCard,电话卡支持打电话,其实现打电话采用模拟代码,以标准输出”正在使用移动网络拨打xxx电话“描述,其中xxx为你拨打的电话号码。
interface IPhoneable
{
void call(String telid);
}
abstract class PhoneCard
{
public abstract void call(String telid);
}
class AppleIphone12 implements IPhoneable
{
private PhoneCard pc;
public void setPc(PhoneCar pc){
this.pc=pc;
}
public void pollPc(){
this.pc=null;
}
public void call(String telid){
if(pc==null){
System.out.println("手机没有电话卡,请安装电话卡");
}else{
pc.call(telid);
}
}
}
你的任务如下:
(1)完成移动网络的电话卡MobileCard的设计;
(2)完成使用苹果手机AppleIphone12进行打电话的模拟演示;程序名为PhoneTestDemo,模拟演示的主要内容如下:
a)购买一个苹果AppleIphone12手机实例;
b)使用手机打号码为”15044556666“的电话;
c)购买一个你设计的移动电话卡实例,并安装到手机上;
d)使用手机打号码为”15044556666“的电话;
(3)写出模拟演示的运行结果。
请输入答案:
参考答案:
(1)(40%)
class MobileCard extends PhoneCard {
public void call(String telid) {
System.out.println("正在使用移动网络拨打"+telid+"电话");
}
}
(2)(40%)模拟代码主程序如下:
public class PhoneTestDemo{
public static void main(String[] args) {
AppleIphone12 phone=new AppleIphone12();
phone.call("15044556666");
phone.setPc(new MobileCard());
phone.call("15044556666");
}
}
(3)(20%)模拟运行的结果如下:
手机没有电话卡,请安装电话卡
正在使用移动网络拨打15044556666电话
学号,班级代码,姓名,性别,入学时间
1800120438,2106406,刘小晴,男,2018
2100130601,2106406,李金媛,女,2021
2100130602,2106406,罗兰,女,2021
给你的问题是,根据提供的照片(在文件夹studentpicture21)和学生信息文件students21.txt,解决上传学生照片的文件要求,即照片的文件名必须是“学号+姓名.jpg”,请你根据学习的Java程序设计知识,编写一个简单的程序完成该实际问题。要求给出如下回答:
(1)写出你的解决问题的思路;
(2)写出实现的代码。
答:(1)(30%分)解决问题的思路为:通过读学生信息文件提取学生的学号和姓名,然后创建一个File文件对象对应到照片文件夹中以学号命名的照片文件,判定文件是否存在,如果文件存在,将给文件更名为“学号+姓名.jpg”文件。
(2)(70%分)程序实现代码如下:
import java.io.*;
public class ImputImage {
public static void main(String[] args) {
String namefile="students21.txt";
String picdir="studentpicture21";
try {
BufferedReader bin=new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(namefile))));
while(bin.ready()) {
String line=bin.readLine();
String[] items=line.split(",");
File f=new File(picdir,items[0]+".jpg");
if(f.exists()) {
String newname=items[0]+items[2]+".jpg";
System.out.println(f.renameTo(new File(picdir,newname)));
}}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
(1)设计一个满足要求的该按钮的监听器组件;
(2)写出将该监听器安装到该组件的代码。
答:(1)(70%分)监听器为:
public class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton jb=(JButton)e.getSource();
System.out.println(jb.getText());
}
}(2)(30%分)安装监听器的代码为:
jb1.addActionListener(new MyActionListener());
12 、(5分)
(1)设计接口Shape,要求定义一个方法area(),方法无参数,返回一个double类型的结果,该结果表示图形的面积。
(2)设计Square,要求实现Shape接口,分别求正方形面积,设计该类型的成员变量和给成员变量赋值的构造方法。
(3)设计测试类,完成创建Square对象,计算边长为2的正方形面积。
请输入答案:
参考答案:
(1)(20%分)接口Shape设计如下:
public interface Shape {
public double area();
}
(2)(60%分)实现类型设计如下:
public class Square implements Shape{
double edge;
public Square(double edge){
this.edge=edge;
}
public double area(){
return edge*edge;
}
}(3(20%分))测试类设计如下:
public class Test{
public static void main(String[] args){
Square square=new Square(2);
System.out.println("边长为2的正方形面积为:"+square.area());
}
}
在定义变量类型的基础上赋值,分析以下执行语句可能产生的异常:
int a,b,n,m;
String s=null;
int[] arr=null;
a=a/b;
arr=new int[n];
a= arr[m];
b=Integer.parseInt(s );
请上机调试,写出可能产生的异常对象类型,并说明每种异常产生的条件?
请输入答案:
参考答案:
回答出以下6种中的5种异常和产生的条件就可以了。
ArrayIndexOutOfBoundsException、ArithmeticException、NegativeArraySizeException、OutOfMemoryError、NullPointerException和NumberFormatException
import java.io.*;
import java.util.Date;
public class UnSerializeDate {
public UnSerializeDate() {
Date d=null;
try {
FileInputStream f=new ____(1)_____(“date.ser”);
ObjectInputStream s=new ObjectInputStream(___(2)_____);
d=(Date) s.readObject();
f.close();
}
catch(Exception e) {
e.printStackTrace();
}
System.out.println(“Unserialized Date object from date.set”);
System.out.println(“Date:”+d);
}
public static void main(String args[]) {
(3) UnSerializeDate();
}
}
请输入答案:
(1)FileInputStream
(2)f
(3)new
第一大题、分析(共14小题,满分100分)相关推荐
- 天天乐学计算机试题,天天乐学选择题(共1919小题)-有答案及解释.docx
资源描述: 天天乐学选择题共1919小题1.利用WINDOWS7"搜索"功能查找文件时,说法正确的是.A.要求被查找的文件必须是文本文件B.根据日期查找时,必须输入文件的修改日期C ...
- 计算机天天乐学题库C语言,天天乐学选择题(共1919小题)-有答案及解释.docx
天天乐学选择题(共1919小题)-有答案及解释.docx 天天乐学选择题共1919小题1.利用WINDOWS7"搜索"功能查找文件时,说法正确的是.A.要求被查找的文件必须是文本文 ...
- 数学计算机电路基础,2019上“计算机电路基础”作业(五大题共16小题).docx
文档介绍: 一.简答题( 6 小题) 1.共射极放大电路如图 1-1 所示,已知 U CC 20 V , U BE 0.7 V ,晶体管的电流放大系 数 β =50,欲满足 I C 2 mA , U ...
- 【刷题汇总】 CSP/NOIP真题分析 基础OJ刷题包
1.NOIP与CSP-J/S的历年真题分析汇总 序号 标题 内容 属性 1 CSP-J2-2021 解题报告 J组真题讲解 题解包 2 CSP-J2-2020 解题报告 J组真题讲解 题解包 3 CS ...
- ccf-csp #201812-2 小明放学 (100分 附解析)
2021.11.26更新,第17行代码判断条件修正 2019.12.14更新,坑点加一(最终答案需要用long long存储) 题目链接:http://118.190.20.162/view.page ...
- CCF201903-1 小中大(100分)【序列处理】
问题链接:CCF201903-1 小中大 问题分析: 原先的数据是有序的,所以就不用排序了,可以直接算出中值.最大值和最小值在数据的两端,用两端的数据,至多做个交换就可以得到.还需要考虑中值带小数点的 ...
- 【华为OD机试真题 python】 比赛【2022 Q4 | 100分】
■ 题目描述 一个有N个选手参加比赛,选手编号为1~N(3<=N<=100),有M(3<=M<=10)个评委对选手进行打分. 打分规则为每个评委对选手打分,最高分10分,最低分 ...
- 华为OD机试(含B卷)真题2023 精简版,50道100分题目。如果距离机考时间不多了,就看这个吧
点击下述地址订阅对应语言专栏,不要看错哦~~~~
- 考研数学一历年真题小题(选择填空)整理
写在前面: 本文想把自己做过的.之前未认真整理过的.真题考过的小题整理出来,其中以错题.好题.知识点.可以记忆的二级结论.可以推广.可以自己联想出题的小题为主. 主要是使得自己提纲挈领地把握,另外若对 ...
最新文章
- Bad credentials异常
- javascript中关于this指向问题详解
- 【delphi】Byte数组与String类型的转换
- LINUX中断学习笔记【转】
- 【Web安全】关于通过木马控制目标和使用中国菜刀拿webshell的应用
- WinAPI: midiOutGetNumDevs - 获取 MIDI 输出设备的数目
- 计算机办公软件技能大赛试题,第七届计算机技能大赛办公软件操作比赛顺利举行...
- 经典C语言程序100例之十九
- 服务器系统的王者——Linux 系统
- 01_常用 Linux 命令的基本使用
- HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测
- 论文学习9-Bidirectional LSTM-CRF Models for Sequence Tagging(LSTM,BILSTM,LSTM-CRF,BILSTM-CRF
- springboot- jsp访问404的问题解决
- vue 双向数据绑定
- cmder下载配置并设置为vscode默认终端
- Tensorflow2.0学习-加载和预处理数据 (七)
- 八数码java_八数码问题-A*算法-Java实现
- QA_java BufferedReader.readLine_出现第一个字符无法读取的问题
- win10安装虚拟机(Virtualbox + vagrant)
- 用批处理文件实现同步到个人时间服务器,局域网内时间同步net time的使用
热门文章
- 127个SQL server热门资料汇总
- 机器学习:K-近邻算法(一)判断电影类型
- 民勤一中2021高考成绩排名榜查询,2021年兰州高考状元多少分是谁,兰州高考状元名单资料...
- 罗马仕php30额定容量是多少,你买的10000毫安充电宝,真实容量到底有多少?
- 深入剖析Docker镜像
- Spark中的DAG介绍
- 1220F - Gardener Alex(笛卡尔树)
- 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)
- 图像处理1:RGB888_YCbCr444
- 一条指令在cpu中的执行流程(理解CPU组成)