Java期末复习资料程序题部分.docx
《Java期末复习资料程序题部分.docx》由会员分享,可在线阅读,更多相关《Java期末复习资料程序题部分.docx(29页珍藏版)》请在冰豆网上搜索。
![Java期末复习资料程序题部分.docx](https://file1.bdocx.com/fileroot1/2023-1/24/96913e0c-cc4f-4af8-a364-63f1421a494d/96913e0c-cc4f-4af8-a364-63f1421a494d1.gif)
Java期末复习资料程序题部分
【程序题】(题型:
编程题、程序填空题)
【例题1】
编写程序,实现判断随机产生的一个三位整数是否为水仙花数,如果是则显示结果“是水仙花数”,否则显示“不是水仙花数”。
所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个“水仙花数”,因为153=13+53+33。
请将下列程序补充完整。
importjava.lang.Math;
publicclassAngel{
publicstaticvoidmain(Stringargs[]){
intx;
x=(int)(Math.random()*900+100);
System.out.println("产生的随机三位整数为:
"+x);
/*求出产生的随机数x是否为水仙花数,并输出结果*/
}
}
参考答案
【例题2】
编写程序,实现求一个整型数组中所有能被3整除的数的和,并且输出结果。
请将下列程序补充完整。
publicclassTest{
publicstaticvoidmain(Stringargs[])
{inti,s=0;
inta[]={10,20,30,40,50,60,70,80,90};
/*求出所有能被3整除的数的和,并输出结果*/
}
}
参考答案
【例题3】
编写Java程序,求13-23+33-43+…+973-983+993-1003的值,并输出结果,请将下列程序补充完整。
publicclassT1{
publicstaticvoidmain(Stringargs[]){
/*求出13-23+33-43+…+973-983+993-1003的值,并输出结果*/
}
}
参考答案
【例题4】
如下java源程序文件中,程序的功能是根据文本框txt1中输入的x,按下列公式求分段函数g(x)的值,并将结果在文本框2中显示出来。
请补充命令按钮的事件程序,使它得到正确的结果。
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.*;
classfun{
JFramewin=null;JTextFieldtxt1=null,txt2=null;JButtonbtn=null;
publicfun(){
win=newJFrame("函数计算");
win.setSize(200,200);win.setLocation(100,100);
txt1=newJTextField();txt1.setBounds(10,10,125,36);
txt2=newJTextField();txt2.setBounds(10,50,125,36);
btn=newJButton("计算函数");btn.setBounds(10,100,150,36);
btn.addMouseListener(newMouseAdapter(){
@Override
publicvoidmouseClicked(MouseEvente){
//在此补充程序代码
}
});
win.setLayout(null);win.add(txt1);win.add(txt2);win.add(btn);win.setVisible(true);
}
}
publicclassExam01{
publicstaticvoidmain(String[]args){
newfun();
}
}
参考答案
【例题5】
在main方法中编写程序,输出1到200之间所有能被3整除的整数,要求输出时每行输出5个整数。
publicclassExam05{
publicstaticvoidmain(String[]args){
}
}
参考答案
【例题6】
实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff。
要求如下:
●Person类中的属性有:
姓名name(String类型),地址address(String类型),电话号码telphone(String类型)和电子邮件地址email(String类型);
●Employee类中的属性有:
办公室office(String类型),工资wage(double类型),受雇日期hiredate(String类型);有一个返回值为double类型的方法calcTax(doubler)用于计算纳税额,纳税额公式为wage*r。
●Faculty类中的属性有:
学位degree(String类型),级别level(int类型);有一个覆写父类的方法calcTax(),方法的纳税额计算公式为wage*r*0.5。
●Staff类中的属性有:
职务称号duty(String类型);
参考答案
【例题7】
根据如下要求编写类,并完成测试类的编写
(1)第一个类是抽象图形类(Shape),含有一个成员变量color(字符串类型),一个没有参数的构造方法,以及一个有一个字符串类型参数的构造方法来初始化颜色变量,还有一个返回颜色变量值的成员方法show,以及一个空方法getArea获取面积,返回值为double类型;
(2)第二个类是圆形类(Circle)继承自图形类,含有一个成员变量半径r,有一个有两个参数的构造方法,来初始化颜色和半径,覆写父类方法getArea,返回值为double,获取圆的面积值。
(3)第三个类是矩形类(Rectangle)继承自图形,含有两个double类型的成员变量长a和宽b,有一个有三个参数的构造方法,来初始化颜色、长和宽,覆写父类方法getArea,返回值为double,获取矩形的面积值。
参考答案
【例题8】
定义student类,其中包括四个私有变量(name、age、sex、score)、三个构造方法和show()方法。
各成员的含义如下。
(1)变量name为字符串类型String,用于存储学生的姓名。
(2)变量age为int类型,用于存储学生的年龄。
(3)变量sex为boolean类型,用于存储学生的性别,男生为false,女生为true。
(4)变量score为double类型,用于存储学生的成绩。
(5)构造方法1为不带参数的构造方法。
(6)构造方法2包括三个参数,用于为变量(name、age、sex)赋值。
(7)构造方法3包括四个参数,用于为变量(name、age、sex和score)赋值。
(8)Show()方法无参数,用于输出变量(name、age、sex和score)的值。
参考答案
【例题9】
按以下要求编写程序
(1)定义一个接口Tools,为其添加一个返回值为double的computerFee方法,用于计算运输费用,该方法含有四个参数distance,per,tolls,number,分别表示元/每公里、距离、过路费、乘客数。
(2)定义一个抽象类Traffic,为其添加一个抽象方法getName,用于返回交通工具的名称。
定义一个类Car继承抽象类Traffic并实现接口Tools,求出该交通工具的运输费用,运输费用为:
“距离×元/公里+过路费+乘客数”,且返回的名称为“Car”。
(3)定义一个类Bus继承抽象类Traffic并实现接口Tools,求出该交通工具的运输费用,运输费用为“距离×元/公里+过路费+乘客数×0.2”,且返回的名称为“Bus”。
(4)定义一个ComputerFee类,为其添加一个静态方法getFee,该方法除了接收一个Tools接口类型的形参变量外,还接收元/每公里、距离、过路费、乘客数等参数,在该方法体内调用Tools接口类型形参变量的computerFee方法
(5)定义一个测试类Test,为其添加main方法,在main方法中分别创建Car类、Bus类的实例对象。
然后编写程序代码调用ComputerFee类的getFee方法并将Car类和Bus类的实例对象分别作为实参传入,同时传入的其它四个参数的值分别为(100,20,200,30)和(200,10,300,40)。
参考答案
【例题10】
按以下要求编写程序
(1)定义一个员工类Employee,类中与四个私有数据成员:
员工号(String类型)、姓名(String类型)、薪水(double类型)、部门(String类型)。
(2)为员工类Employee添加一个如下构造方法,用于初始化成员变量:
i无参构造,无任何操作。
ii单参构造:
只传递员工号,对员工号进行初始化。
iii双参构造,传递员工号,姓名,对员工号和姓名进行初始化,其中员工号通
过调用单参构造方法完成。
iv四参构造,传递员工号、姓名、部门、薪水,初始化所有成员变量,其中员工
号和姓名通过调用双参构造完成。
(3)为员工类添加一个方法printInfo,用于输出员工类的相应信息。
(4)编写员工类的测试类Test,添加main方法,在main方法中编写程序创建一个员工对象:
员工号为001,姓名为:
Mike,部门为:
开发部,薪水为:
10000;调用printInfo方法输出员工的相关信息。
(5)
参考答案
【例题11】
按以下要求编写程序
(1)创建一个表示复数的类Complex。
复数由两部分组成(即有两个成员变量):
实部和虚部,一个复数可以表示为(a,bi),a代表实部,b代表虚部。
数据类型都为double。
(2)为Complex类添加两个构造器,一个无参构造,其成员变量初始值都为0,另一个带两个参数的构造器,为其两个变量进行初始化。
(3)为Complex类添加一个方法add,实现两个复数的加法运算。
操作的规则是:
(a,bi)+(c,di)=(a+c,(b+d)i);
(4)编写方法getString返回以“(a,bi)”形式复数信息。
(5)编写类进行测试Test,在该类的main()方法中创建2个Complex对象,参数分别为(4.0,5.0)和(2.5,3.0),然后输出2个Complex对象信息和两个对象相加运算的结果。
参考答案
【例题12】
按以下要求编写程序
(1)声明一个图书类Book,类中有两个实例成员变量为书名(String类型)、书价(double类型)和一个类成员变量为数量(int类型,初始值为0,用于统计书的数量)。
(2)为Book类添加两个构造器(无参和两参),在无参构造方法中统计书的数量,在两参构造方法中调用无参构造器并对成员变量书名和书价进行初始化。
(3)为Book类添加一个静态方法getNum,用于返回类成员变量数量的值。
(4)为Book类添家一个方法getInfo,用于返回书名和价格。
(5)编写类进行测试Test,在该类的主方法main中定义一个含有3个元素的对象数组,并且对数组元素中的对象进行初始化(内容自行给定),然后输出对象数组的相应信息以及求出图书的数量。
参考答案
【例题13】
按以下要求编写程序
(1)定义一个人类Person,Person类中包含4个私有的数据成员name、addr、sex、age,
分别为字符串型、字符串型、字符型及整型,表示姓名、地址、性别和年龄。
为Person
类添加一个4参构造方法,为成员变量初始化(要求年龄在18-60岁之间方可赋
值);添加一个输出方法getString返回人的相关信息。
(2)定义一个学生类Student,继承Person类,并增加成员math、english存放数学和英语成绩。
为Student类添加一个6参构造方法,并重写父类的方法getString,返回学生的相关信息。
(3)定义一个Test类,添加main方法,在main方法中声明并创建一个Student类的对象,要求调用其六个参数的构造器,并调用其getString方法输出信息。
参考答案
【例题14】
程序填空题范例,编写程序,设计一个简单的用户界面,窗口中包含两个组件:
JTextArea和JButton,要求实现点击按钮时,将JTextArea组件中的内容保存到t1.txt文件,存放路径为“D:
\t1.txt”。
请将下列程序补充完整。
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
importjava.awt.*;
classMyFrame{
privateJFamef;
privateJButtonb;
privateJTextAreata;
publicMyFrame(){
//创建窗体,窗体名称为“保存窗口”
ta=newJTextArea(8,10);
//创建按钮,按钮标题为“保存”
//利用BorderLayout布局,添加文本域组件于窗体的中心
//利用BorderLayout布局,添加按钮组件于窗体的南部
//设置窗体大小(300,200)
f.setLocation(300,300);
//设置窗体可见
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit
(1);
}
});
b.{//注册按钮监视器
publicvoidactionPerformed(ActionEventarg0){
//创建文件
try{
//创建输出流
Stringstr=ta.getText();
byteb[]=str.getBytes();
//写入文件
out.close();
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
}
publicclassDemo{
publicstaticvoidmain(Stringargs[]){
newMyFrame();
}
}
【例题15】
编写程序,设计一个简单的用户界面,窗口中包含两个组件:
JTextArea和JButton,要求实现点击按钮时,打开一个t1.txt文件,存放路径为“D:
\t1.txt”。
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
importjava.awt.*;
classMyFrame{
privateJFramef;
privateJTextAreata;
privateJButtonb;
publicMyFrame(){
//创建窗体,窗体名称为“打开窗口”
ta=newJTextArea(8,10);
//创建按钮,按钮标题为“打开”
//利用BorderLayout布局,添加文本域组件于窗体的中心
//利用BorderLayout布局,添加按钮组件于窗体的南部
//设置窗体大小(300,200)
f.setLocation(300,300);
//设置窗体可见
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit
(1);
}
});
b.{//注册按钮监视器
publicvoidactionPerformed(ActionEventarg0){
ta.setText(null);
//创建文件
if(file!
=null){
try{
//创建输入流
byteb[]=newbyte[(int)file.length()];
//读取文件
ta.append(newString(b));
in.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
});
}
}
publicclassDemo{
publicstaticvoidmain(Stringargs[]){
newMyFrame();
}
}
【例题16】
编写程序实现窗体和组件,窗体上有三个文本框(JTextField)txt1、txt2和txt3,一个命令按钮。
为命令按钮添加鼠标事件监听,当点击按钮时,将文本框txt1和txt2中输入的数字进行求和,并将结果显示在文本框txt3中。
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JTextField;
publicclassExam11{
publicstaticvoidmain(String[]args){
JFramewin=newJFrame("简单计算器");
win.setSize(400,180);
win.setLocation(400,200);
win.setLayout(null);
JLabell1=newJLabel("请输入数字1");
JLabell2=newJLabel("请输入数字2");
JLabell3=newJLabel("求和结果");
l1.setSize(160,30);
l2.setSize(160,30);
l3.setSize(160,30);
l1.setLocation(10,10);
l2.setLocation(10,50);
l3.setLocation(10,90);
finalJTextFieldtxt1=newJTextField(10);
finalJTextFieldtxt2=newJTextField(10);
finalJTextFieldtxt3=newJTextField(10);
txt1.setBounds(120,10,160,30);
txt2.setBounds(120,50,160,30);
txt3.setBounds(120,90,160,30);
JButtonbtn=newJButton("=");
btn.setBounds(300,90,50,30);
/*************在下面空白行处添加程序代码******************************/
btn.addMouseListener(newMouseListener(){
publicvoidmouseClicked(MouseEventarg0){
inta=Integer.parseInt(txt1.getText());
intb=Integer.parseInt(txt2.getText());
txt3.setText((a+b)+"");
}
publicvoidmouseEntered(MouseEventarg0){
}
publicvoidmouseExited(MouseEventarg0){
}
publicvoidmousePressed(MouseEventarg0){
}
publicvoidmouseReleased(MouseEventarg0){
}
});
win.add(l1);
win.add(l2);
win.add(l3);
win.add(txt1);
win.add(txt2);
win.add(txt3);
win.add(btn);
win.setVisible(true);
}
}
【例题17】
设计如下所示窗体,窗体上有两个标签组件(LB1和LB2)、两个JTextField文本框(txt1和txt2)、一个命令按钮btn,按如下要求完成程序设计。
(1)设置窗体标题为“计算n的阶乘”,窗体大小360,180,窗体位置300,300
(2)设置LB1和LB2大小均为(宽160,高30),LB1的位置为(10,10),LB2的位置为(10,50)
(3)设置txt1和txt2的大小均为宽160,高30,txt1的位置为(120,10)txt2的位置为(120,50)
(4)设置命令按钮btn的显示字符为”=”,设置其大小为50,30,显示位置为300,50
(5)为命令按钮btn添加鼠标点击事件,当按下按钮时,计算txt1中输入的整数的阶乘,并将结果显示在txt2中。
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JTextField;
publicclassExam11{
publicstaticvoidmain(String[]args){
JFramewin=newJFrame("计算n的阶乘");
win.setSize(400,180);
win.setLocation(400,200);
win.setLayout(null);
JLabellb1=newJLabel("请输入n");
JLabellb2=newJLabel("n的阶乘是");
lb1.setSize(160,30);
lb2.setSize(160,30);
lb1.setLocation(10,10);
lb2.setLocation(10,50);
finalJTextFieldtxt1=newJTextField(10);
finalJTextFiel