java上机实验练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前八个是苏老师给的(主要),后八个事别的班老师发的,后八个作为参考就好!
实验1.1
(1) Health 的属性有:
height : 友好、double型、高度
weight : 友好、double型、体重
bmi: 友好、double型、健康指数
(2) Health 的方法有:
Health ( double , double ) : 公有、构造方法,形参1为高度,形参2为体重。
double BMI(): 公有、计算健康指数。
char getHealthy(): 公有、返回健康等级。
注意:
健康等级计算方法:
bmi=体重 / (身高的平方)
健康等级评定方法:
bmi<18.5 A
bmi>=18.5 且 bmi<23.9 B
bmi>=23.9 且 bmi<29.9 C
bmi>=29.9 D
实验1.2
(1)Circle 的成员变量有:
radius : 私有、double型、圆的半径
PI: 类变量、公有、常量、π
(2)Circle 的方法有:
Circle( ) : 公有、构造方法,将圆的半径置为2
Circle(double ) : 公有、构造方法,形参为圆的半径。
double getLength(): 公有、计算圆的周长;
double getArea():公有、计算圆的面积。
实验1.3
(1)Lader的成员变量有:
above : 友好、double型、上底
bottom: 友好、double型、下底
height: 友好、double型、高
(2)Lader 的方法有:
Lader( double) : 公有、构造方法,将梯形的上底赋值为r,下底是上底的2倍,高是上底和下底的平均值
Lader( double,double,double ) : 公有、构造方法,形参1、2、3 分别为上底、下底和高。
double getArea(): 公有、计算梯形的面积。
实验1.4
(1)Triangle的成员变量有:
sideA : 私有、double型、A边
sideB : 私有、double型、B边
sideC : 私有、double型、C边
(2)Triangle 的方法有:
Triangle ( double,double,double ) : 公有、构造方法,形参1、2、3 分别为A边、B边和C边。
double getArea(): 公有、计算三角形的面积。
double getPerimeter(): 公有、计算三角形的周长。
(3)提示:
三角形面积的计算方法:
s:三条边之和的一半 ___________________
三角形面积 = √ s (s-A边)(s-B边)(s-B边)
实验2.1
(1)Complex 的属性有:
realPart : 私有、double型、复数的实数部分
imgPart : 私有、double型、复数的虚数部分
(2)Complex 的方法有:
Complex( ) : 公有、构造方法,将复数的实部和虚部都置1
Complex( double , double ) : 公有、构造方法,形参1为实部的初值,形参2为虚部的初值。
Complex complexAdd(Complex ) : 公有、将当前复数对象与形参复数对象相加,所得的结果仍是一个Complex类型的复数对象。
实验2.2
(1) Fraction 的属性有:
numerator: 友好、int型、分子
denominator : 友好、int型、分母
(2) Fraction 的方法有:
Fraction ( int , int ) : 公有、构造方法,形参1为分子,形参2为分母。(如果分母为0,则将分母设置为1)
Fraction divide(Fraction ) :
公有、计算除法,形参为除数。(当除数为0时,返回的Fraction对象的分子、分母均为0)
实验2.3
(1) Point 的属性有:
x : 友好、double型、点的x坐标
y : 友好、double型、点的y坐标
(2) Point 的方法有:
Point ( double , double ) : 公有、构造方法,形参1为点的x坐标,形参2为点的y坐标。
double distance(Point ) : 公有、计算两点之间的距离。
Point middlePoint(Point): 公有、计算两点之间的中点。
实验2.4
(1) Multinomial 的属性有:
a2: 友好、double型、二次项系数
a1: 友好、double型、一次项系数
a0: 友好、double型、常数
(2) Multinomial 的方法有:
Multinomial ( double , double , double) : 公有、构造方法,形参1为二次项系数,形参2为一次项系数,形参3为常数。
Multinomial differential() : 公有、求导,获得一次多项式
Multinomial add(Multinomial) : 公有、多项式相加,获得二次多项式
实验3.1
题目:下面给出了一个环形队列类Queque的部分代码,运行该类的main方法后将获得以下输出结果:
(队列元素数为10时)
1 2 3 4 5 6 7 8 9 10 -1
1 2 3 4 5 6
5 6 7 8 9 10 -1 -1 -1 -1 -1
7 8 9 10 1 2 3 4 5 6 0
请根据提示将其代码补充完整。(main方法无需编写)
注意:Queue类只有不带任何参数的构造方法。
//环形队列类,先进先出
public class Queue {
int start=0; //队列的开始位置
int end=0; //队列的结束位置
【补充字段定义】
public Queue(int max){
elements=new int[max];
}
//获取队列最大可容纳的元素数目
public int getLength(){
return elements.length;
}
//获取队列当前的元素数目
public int getNumberOfElements(){
return count;
}
//取队列中的元素,如果队列为空则返回0
public int get(){
【补充代码】
}
//添加元素进入队列,如果在添加该元素之前队列已满则返回-1,
//否则返回添加之后该队列的长度
public int put(int n){
【补充代码】
}
//清空队列
public void clear(){
【补充代码】
}
//以下代码只为帮助理解,无需写入到答案中
public static void main(String[] args) {
Queue q=new Queue(10);
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.put(i+1));
}
System.out.println();
for(int i=0;i<=q.getLength()/2;i++){
System.out.print(" ");
System.out.print(q.get());
}
System.out.println();
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.put(i+1));
}
System.out.println();
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.get());
}
}
}
实验3.2
已知接口StringInterface的定义如下:
package exam02;
public interface StringInterface {
//判断班号是否正确(6位数字,且专业编号
为20,年级班号无需验证)
boolean isClassNoCorrect(String studentNo);
//将字符串逆序
String reverseString(String s);
//实现两个整数字符串的相加,即add("1","2")的返回值为"3"
String add(String a,String b);
//将字符串b插入到字符串a当中,其中position为插入的位置
//即insertString("abc","ef",2)的返回值为"abefc"
String insertString(String a, String b, int position);
//对以逗号分隔的字符串中的整数进行求和
//即total("1,2,3,4")返回值为10
int total(String s);
}
请按照该接口的说明编写该接口的实现类StringTest。
注意:请勿在StringTest类内定义任何形式的构造方法。
实验3.3
已知Point类的定义如下:
package exam02;
public class Point {
public double x;
public double y;
}
又知抽象类Circle的定义如下:
package exam02;
public abstract class Circle {
protected Point center=new Point(); //圆心
protected double r; //半径
public final static double PI=3.14; //圆周率
public Circle(double r,int x,int y){
this.r=r;
center.x=x;
center.y=y;
}
//计算圆心到指定点的距离
public abstract double distance(Point p);
//计算两个圆之间的圆心距
public abstract double distance(Circle c);
//判断圆是否在另一个圆的内部
public abstract boolean isInCircle(Circle c);
//判断一个点是否在圆的内部
public abstract boolean isInCircle(Point p);
//判断圆是否比另一个圆要大
public abstract boolean isBiggerThan(Circle c);
//获取半径
public double getR(){
return r;
}
//获取圆心
public Point getCenter(){
return center;
}
}
实验3.4
已知Point类的定义如下:
package exam02;
public class Point {
public double x;
public double y;
}
又知抽象类Line的定义如下:
package exam02;
//无需考虑直线平行或垂直于x轴的情况,直线的函数表达为y=kx+b
public abstract class Line{
protected double k; //斜率
protected double b; //直线与y轴的交点
final static double delta=0.01; //计算精度
//通过斜率和一个点设置直线
public void setLine(double k, Point p) {
this.k=k;
b=p.y-k*p.x;
}
//判断两条直线是否重合
public boolean isALine(Line line){
return (Math.abs(this.k-line.k)
//通过两个点设置直线
public abstract void setLine(Point p1,Point p2);
//通过斜率以及与y轴的交点设置直线
public abstract void setLine(double k, double b);
//判断两条直线是否平行
public abstract boolean isParell(Line line);
//判断两条直线是否垂直
public abstract boolean isVertical(Line line);
//计算点到直线的距离
public abstract double distance(Point p);
//计算两条直线的交点
public abstract Point cutPoint(Line line);
//将直线平移,使其通过某一点
public abstr
act Line moveTo(Point p);
}
请按照Line类的说明编写其子类LineTest。
注意:请勿为LineTest定义构造方法。
实验3.5
已知抽象类Person的定义如下:
package exam02;
import java.util.Date;
public abstract class Person {
protected String account; //账号
protected String password; //密码
protected Date birthday; //生日
//获取账号
public String getAccount() {
return account;
}
//获取密码
public String getPassword() {
return password;
}
//初始化个人信息
public Person(String account,String password,Date birthday){
this.account=account;
this.password=password;
this.birthday=birthday;
}
//学号信息中的年级是否处于91级~11级之间(含91和11)
public abstract boolean isAfter90();
//登录,比对参数中用户名与密码是否与自己的用户名密码一致
public abstract boolean login(String account,String password);
//比较两个人的年龄大小
public abstract boolean isElderThan(Person p);
//获取年龄(以当前时间为准)
public abstract int getAge();
//获取生日
public abstract Date getBirthday();
}
Student类只有一个构造方法,其形式如下:
public Student(String studentNo, String name,Date birthday),执行该构造方法之后,其账号为学号,密码为学号后2位,
实验3.6
请按照该接口的说明编写该接口的实现类ToolTest。
注意:请勿在ToolTest类内定义任何形式的构造方法。
package exam02;
import java.util.List;
public interface ToolInterface {
//一周之后的日期dayAfterAWeek("2012-1-30")返回的结果为6(6号)
public int dayAfterAWeek(String dateString);
//将整数数组转换为整数列表,但两者的元素次序相反
public List
//求数组中最大的元素
public int max(int data[]);
//将数组从小到大排序
public int[] sort(int data[]);
//判断一个整数n是否位于列表当中
public boolean isInList(List
//list中的所有元素均在'0'~'9'之间,求算'0'~'9'各个字符在list中出现的次数,
//返回数组int[]共有10个元素,其中第0个元素表示'0'的出现的次数,依次类推
public int[] countOfNumbers(List
}
请按照该接口的说明编写该接口的实现类ToolTest。
注意:请勿在ToolTest类内定义任何形式的构造方法。
实验3.7
题目:下面给出了一个堆栈类Stack的部分代码,运行该类的main方法后将获得以下输出结果:
(堆栈元素数为10时)
1 2 3 4 5 6 7 8 9 10 -1
10 9 8 7 6 5
5 6 7 8 9 10 -1 -1 -1 -1 -1
6 5 4 3 2 1 4 3 2 1 0
请根据提示将其代码补充完整。(main方法无需编写)
注意:Stack类只有一个构造方法。
//堆栈类
public class Stack {
int top=0; //栈顶
int[] elements; //放置堆栈元素的数组
public Stack(i
nt n){
【补充代码】
}
//获取堆栈可容纳的元素总数
public int getLength(){
【补充代码】
}
//获取堆栈当前的元素数
public int getNumberOfElements(){
【补充代码】
}
//从堆栈中弹出元素,如果队列为空则返回0
public int pop(){
【补充代码】
}
//添加元素进入堆栈,如果在添加该元素之前堆栈已满则返回-1,
//否则返回添加之后该堆栈的长度
public int push(int n){
【补充代码】
}
//清空堆栈
public void clear(){
【补充代码】
}
public static void main(String[] args) {
Stack q=new Stack(10);
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.push(i+1));
}
System.out.println();
for(int i=0;i<=q.getLength()/2;i++){
System.out.print(" ");
System.out.print(q.pop());
}
System.out.println();
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.push(i+1));
}
System.out.println();
for(int i=0;i<=q.getLength();i++){
System.out.print(" ");
System.out.print(q.pop());
}
}
}
实验3.8
已知Point类的定义如下:
package exam02;
public class Point {
public double x;
public double y;
}
又知抽象类Rectangle的定义如下:
package exam02;
public abstract class Rectangle {
protected Point center; //矩形的中点
protected int width; //矩形的宽度
protected int height; //矩形的高度
//获取中点
public Point getCenter() {return center;}
//获取宽度
public int getWidth() {return width;}
//获取高度
public int getHeight() {return height;}
//计算面积
public abstract double area();
//比较面积大小
public abstract boolean isBiggerThan(Rectangle r);
//计算对角线长度
public abstract double getLength();
//判断点p是否在本矩形之内
public abstract boolean isInRectangle(Point p);
//判断矩形r是否在本矩形之内
public abstract boolean isInRectangle(Rectangle r);
//获取矩形的左上角顶点
public abstract Point getPoint();
}
请根据已给出的Point类和Rectangle类编写Rectangle类的子类RectangleTest
注意,RectangleTest只有一个构造方法,其定义如下:
public RectangleTest(Point p1,Point p2){
【补充代码】
}