【Java期末复习】《面向对象程序设计》练习库
目录
一、单选题
二、填空题
三、程序填空题
1、 super使用--有如下父类和子类的定义,根据要求填写代码
2、简单加法计算器的实现
3、House类
4、矩形类
5、创建一个Box类,求其体积
四、函数题
6-1 求圆面积自定义异常类
6-2 判断一个数列是否已排好序
6-3 设计一个矩形类Rectangle
6-4 Person类
6-5 是否偶数
6-6 Java类实现-正方形
6-7 学生类
6-8 数组求和
6-9 Rectangle类
五、编程题
7-1 设计一个矩形类Rectangle
7-2 重复数据问题
7-3 矩阵相加
7-4 身体质量指数(BMI)测算
7-5 闰年判断
一、单选题
1、下面的方法,当输入为2的时候返回值是多少?( D )
public int getValue(int i) {int result = 0;switch (i) {case 1:result = result + i;case 2:result = result + i * 2;case 3:result = result + i * 3;}return result;}A.0
B.2
C.4
D.10
没有break,发生case穿透现象,程序会继续向下执行,直到遇到break或者结束switch语句的大括号为止,其中i一直为2
2、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为( C )。
A.隐藏
B.覆盖
C.重载
D.Java不支持此特性
3、关于抽象类,下面叙述错误的是( C ) 。
A.包含抽象方法的类必须是抽象类
B.抽象方法只需要声明,不需要实现
C.抽象类可以实例化
D.抽象类中可以没有抽象方法
4、以下哪个方法用于定义线程的执行体? ( C )
A.start()
B.init()
C.run()
D.ynchronized()
5、关于集合对象的元素遍历描述错误的是 D
A.通过集合对象可获取迭代器对象
B.通过迭代器对象的hasNext()方法判断是否还有下一个元素
C.通过迭代器对象的next()方法获取元素,并移动到下一个位置
D.通过迭代器对象可向集合中添加元素
6、 运行类C的输出是( D )。
class A {public A() {System.out.println("The default constructor of A is invoked");} }class B extends A {public B() {System.out.println("The default constructor of B is invoked");} }public class C {public static void main(String[] args) {B b = new B();} }A.没有输出。
B.输出 "The default constructor of B is invoked"
C.输出"The default constructor of B is invoked",然后是"The default constructor of A is invoked"
D.输出"The default constructor of A is invoked",然后是"The default constructor of B is invoked"
7、 JFrame的缺省布局管理器是( C )。
A.FlowLayout
B.CardLayout
C.BorderLayout
D.GridLayout
8、 下面程序的输出结果为:( A )。
class A {double f(double x, double y) {return x * y;} }class B extends A {double f(double x, double y) {return x + y;} }public class Test {public static void main(String args[]) {A obj = new B();System.out.println(obj.f(4, 6));} }A.10.0 成员方法的重写——子类让父类的成员方法不复存在
B.24.0
C.2.0
D.11.0
9、 以下关于继承的叙述正确的是( A )。
A.在Java中类只允许单一继承
B.在Java中,一个类只能实现一个接口
C.在Java中,一个类不能同时继承一个类和实现一个接口
D.在Java中,接口也具有单继承性
10、 以下声明合法的是( B )
A.abstract double d; 不可访问数据成员的修饰词为static和final
B.public abstract void w( );
C.default String s; 可访问数据成员的修饰词为protected public private 缺省缺省也就是前面什么都不用修饰,就是String s
D.abstract final double method( ){ } abstract和final不能并列修饰
11、关于下面的类,哪句是最正确的? B
class A {private int i;protected int j; }class B extends A {private int k;protected int m; }A.B的对象包含数据域 i, j, k, m。
B.B的对象包含数据域 j, k, m。
C.B的对象包含数据域 j, m。
D.B的对象包含数据域k, m。
12、 在Java中用什么关键字修饰的方法可以直接通过类名来调用?( A )
A.static
B.final
C.private
D.void
二、填空题
1、在实现多线程的程序时有两种方式,一是通过继承(Thread )类,二是通过实现(Runable )接口。
2、使用Iterator遍历集合时,可以调用hasNext()方法判断是否存在下一个元素,若存在下一个元素,则调用next()方法取出该元素
3、 在Java GUI编程中,javax.swing包中JTextField是对单行文本进行编辑的组件。
4、 如果一个Java程序实现了监听接口ActionListener,则该程序的必须导入包java.util.event;
三、程序填空题
1、 super使用--有如下父类和子类的定义,根据要求填写代码
class Father {int a;public Father(int a) {this.a=a;}public void print() {System.out.println(a);}
}class Child extends Father {int a;public Child(int a) {super(a); // 将形参a的数值赋给父类成员变量a this.a=a*10; // 将父类成员变量a的值*10赋给本类的成员变量a}public void print(){System.out.println(super.a); // 输出父类成员变量a的值System.out.println(this.a); // 输出子类成员变量a的值}
}public class Main {public static void main(String[] args) {Child child=new Child(10);child.print();}
}
2、简单加法计算器的实现
public class Main extends JApplet implements ActionListener {
Container cp=getContentPane();JButton JButton1=new JButton("确定");//创建JButton1,并初始化JLabel JLabel1=new JLabel("+");
JLabel JLabel2=new JLabel("=");
JTextField JTextField1=new JTextField(10);
JTextField JTextField2=new JTextField(10);
JTextField JTextField3=new JTextField(10);
public void init()
{cp.setLayout(new FlowLayout());cp.add(JTextField1); cp.add(JLabel1);cp.add(JTextField2); cp.add(JLabel2);cp.add(JTextField3); cp.add(JButton1);JButton1.addActionListener(this);//为JButton1增加监听}
public void actionPerformed(ActionEvent e) {if(e.getSource()==JButton1)//用getSource()方法获取事件源{double sum=Double.valueOf(JTextField1.getText())+Double.valueOf(JTextField2.getText());//获取两个操作数,并转化为double型JTextField3.setText(String.valueOf(sum));
}}}
3、House类
- 构造一个House类表示住宅 , 该类实现了Comparable接口。
- 该类有一个私有的String类型成员变量address,两个私有的double型成员变量area和pirce;
- 该类有一个带一个String型参数和两个double型参数的构造方法,用参数的值初始化house对象。
- 为address、area和price添加getter()和setter()方法。注意,住宅的面积和价格必须大于0,如果setArea(double area)方法的参数小于等于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"住宅的面积必须大于0";如果setPrice(double price)方法的参数小于等于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"住宅的价格必须大于0"。
- 该类有一个公共的方法int compareTo(House house),比较的依据是住宅的单位均价(价格除以面积)。如果当前对象的单位均价大于参数的单位均价,返回1;当前对象的单位均价小于参数的单位均价,返回-1;否则返回0。
- 该类有一个公共方法toString(),根据住宅的数据生成并返回一个字符串(具体要求看输出样例)。
- 构造一个Main ,执行一个for循环,共循环10次。每次循环从键盘读入数据创建两个House对象,比较并输出其中较大的对象;如果捕捉到异常,则输出异常信息。
import java.util.Scanner;class House implements Comparable<House>
{private String address;private double area;private double price;public House(String address,double area,double price) {setAddress(address);setArea(area);setPrice(price);}public String getAddress() {return address;}public void setAddress(String address) {this.address=address;}public double getArea() {return area;}public void setArea(double area) {if(area>0) this.area = area;else throw new IllegalArgumentException("住宅的面积必须大于0");}public double getPrice() {return price;}public void setPrice(double price) {if(price>0) this.price = price;else throw new IllegalArgumentException("住宅的价格必须大于0");}public int compareTo(House o) {if (price/area>o.price/o.area) return 1;else if (price/area<o.price/o.area) return -1;else return 0;}@Overridepublic String toString() {return "House{" + "address=" + address + ", area=" + area + ", price=" + price + '}';}
}public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);for(int i=0; i<10; i++) {try{House house1 = new House(input.next(), input.nextDouble(), input.nextDouble());House house2 = new House(input.next(), input.nextDouble(), input.nextDouble());House maxHouse;if (house1.compareTo(house2)>= 0)maxHouse = house1;elsemaxHouse=house2;System.out.println("The max of " + house1 + " and " + house2 + " is " +maxHouse);} catch (IllegalArgumentException e1) {System.out.println(e1.getMessage());input.nextLine();} catch (Exception e2) {System.out.println(e2.getMessage());input.nextLine();}}}
}
4、矩形类
- 构造一个Rectangle类表示矩形 , 该类实现了Comparable接口。
- 该类有两个私有的double型成员变量width和height,表示矩形的宽度和高度;
- 该类有一个带一个无参的构造方法,把宽带和高度都初始化为0;
- 该类有一个带两个double型参数的构造方法,用参数的值初始化矩形的宽度和高度。
- 为width和height添加getter()和setter()方法。注意,宽度和高度必须大于等于0,如果setWidth(double width)方法的参数小于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"矩形的宽度必须大于等于0";setHeight(double height)方法的参数小于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"矩形的高度必须大于等于0"。
- getArea()方法,返回矩形的面积;
- getgetPerimeter()方法,返回矩形的周长;
- 该类有一个公共的方法int compareTo(Rectangle rectangle),比较当前对象和参数。如果当前对象的面积大于参数的面积,返回1;当前对象的面积小于参数的面积,返回-1;否则返回0。
- 该类有一个公共方法toString(),根据矩形的宽度和高度生成并返回一个字符串(具体要求看输出样例)。
- 构造一个Main ,执行一个for循环,共循环6次。每次循环从键盘读入数据创建两个矩形对象,比较并输出其中较大的对象的面积;如果捕捉到异常,则输出异常信息。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);for(int i=0; i<6; i++) {try{Rectangle rectangle1 = new Rectangle(input.nextDouble(),input.nextDouble());Rectangle rectangle2 = new Rectangle(input.nextDouble(),input.nextDouble());Rectangle maxRectangle;if (rectangle1.compareTo(rectangle2)>= 0)maxRectangle=rectangle1;elsemaxRectangle=rectangle2;System.out.println("The max area of " + rectangle1 + " and " + rectangle2 + " is " + maxRectangle.getArea());}
catch(IllegalArgumentException e1) {System.out.println(e1.getMessage());input.nextLine();} catch (Exception e2) {System.out.println(e2.getMessage());input.nextLine();}}}
}class Rectangle implements Comparable<Rectangle>{private double width;private double height;public Rectangle() {width=0;height=0;}public Rectangle(double width, double height) {setWidth(width);getHeight(height);}public double getWidth() {return width;}public void setWidth(double width) {if(width>=0)this.width = width;elsethrow new IllegalArgumentException("矩形的宽度必须大于等于0");}public double getHeight() {return height;}public void setHeight(double height) {if(height>=0) this.height = height;elsethrow new IllegalArgumentException("矩形的高度必须大于等于0");}public double getArea() {return width*height;}public double getPerimeter() { return 2*(width+height);}public int compareTo(Rectangle rectangle) {if (getArea()>rectangle.getArea())return 1;else if (getArea()<rectangle.getArea())return -1;elsereturn 0;}public String toString() {return "Rectangle(width:"+width+",height:"+height+")";}
}
5、创建一个Box类,求其体积
- 设计并实现Box类,它包含盒子的高度、宽带和深度的实例数据:还包含布尔变量full这个实例数据,变量full表示盒子是否满了。所有数据都定义为私有。定义Box构造函数接收并初始化盒子的高度、宽带和深度。每次新创建的Box都为空,构造函数将full初始化为假。该类所有实例都有getter和setter方法;该类还包含了一个计算盒子体积的方法。
- 该类包含一个toString方法,用来返回一行关于盒子的描述。
- 例如,输入的长、宽、高分别为4,如果盒子为空,则输出:
- Box is empty, The Volumn is 64
- 若将盒子的宽度修改为5,盒子设置为满,则输出:
- Box is full, The Volumn is 80
- 创建一个测试类BoxTest,其main方法输入盒子的长、宽、高,实例化一个Box对象,并输出盒子的描述。
- 根据以下的测试类,在空格出填入Box类的设计程序。
import java.util.Scanner;class Box{private boolean full;private int width;private int height;private int lenght;public Box(int width,int heigth,int length) {full = false;this.width = width;this.height = height;this.lenght = lenght;}public boolean isFull() {return full;}public void setFull(boolean full) {this.full = full;}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int h) {this.height = height;}public int getLenght() {return lenght;}public void setLenght(int lenght) {this.lenght = lenght;}public int getVolumn() {return width*height*length;}@Overridepublic String toString(){return "Box is " + (full ? "full" : "empty") + ", The Volumn is " + getVolumn();}
}public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int w = input.nextInt();int h = input.nextInt();int l = input.nextInt();Box box1 = new Box(w,h,l);System.out.println(box1.toString());box1.setWidth(5);box1.setFull(true);System.out.println(box1.toString());}
}
四、函数题
6-1 求圆面积自定义异常类
计算圆的面积,其中PI取3.14,圆半径为负数时应抛出异常,输出相应提示。
根据提供的主类信息,编写Circle类和CircleException类,以及在相关方法中抛出异常。
在这里给出主类 import java.util.*; public class Main {public static void main(String[] args) {double s=0;Scanner sc=new Scanner(System.in);double r1,r2;r1=sc.nextDouble();r2=sc.nextDouble();Circle c1=new Circle(r1);Circle c2=new Circle(r2);try{s = c1.area();System.out.println(s);s = c2.area();System.out.println(s);}catch (CircleException e){e.print();}} }/* 请在这里填写答案 编写Circle 和CircleException类*/3.5 -3.538.465 圆半径为-3.5不合理
class Circle
{double r;public Circle(double r){this.r=r;}double area() throws CircleException{if(this.r>=0) return 3.14*r*r;else throw new CircleException(this.r);}
}class CircleException extends Exception
{double r;public CircleException(double r){this.r=r;}void print(){System.out.print("圆半径为"+this.r+"不合理");}
}
6-2 判断一个数列是否已排好序
编写如下所示的一个方法,判断一个数列是否已排序,如果已按升序排列则返回true。
public static boolean isSorted(int[] list)
主测试程序输入一组数据,然后输出该数列是否已排序或未排好序。
注意:输入的第一个数为该数列的元素个数。
public static boolean isSorted(int[] list)
{int n=list[0];boolean f=true;//for(int i=1;i<=n;i++) System.out.print(list[i]+" ");for(int i=2;i<=n;i++) if(list[i]<list[i-1]) return false;return true;
}
6-3 设计一个矩形类Rectangle
设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.
一个无参构造方法。
一个为width和height指定值的矩形构造方法。
一个名为getArea()的方法返回这个矩形的面积。
一个名为getPerimeter()的方法返回这个矩形的周长。import java.util.Scanner; /* 你的代码将被嵌入到这里 */public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);double w = input.nextDouble();double h = input.nextDouble();Rectangle myRectangle = new Rectangle(w, h);System.out.println(myRectangle.getArea());System.out.println(myRectangle.getPerimeter());input.close();} }3.14 2.788.7292 11.84
class Rectangle
{double width;double height;public Rectangle(){width=1;height=1;}public Rectangle(double width,double height){this.width=width;this.height=height;}public double getArea(){return height*width;}public double getPerimeter(){return (width+height)*2;}
}
6-4 Person类
构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息
import java.util.Scanner; public class Main{public static void main(String[] args) {Scanner scan = new Scanner(System.in); String name = scan.next(); String sex = scan.next(); int age = scan.nextInt();Person p = new Person();p.setName(name);p.setSex(sex);p.setAge(age);p.print();scan.close(); } }/* 你的代码被嵌在这里 */Lucy male 23name:Lucy; sex:male; age:23
class Person
{String name;String sex;int age;public void setName(String name){this.name=name;}public void setSex(String sex){this.sex=sex;}public void setAge(int age){this.age=age;}public void print(){System.out.print("name:"+name+"; sex:"+sex+"; age:"+age);}
}
6-5 是否偶数
public static boolean isOdd(int data)
{return data%2==0;
}
6-6 Java类实现-正方形
构造一个Square类,该类有一个私有double变量side存放边长,可以通过getter/setter方法进行访问。
该类具有getArea和getLength两个方法,能够利用边长计算正方形的面积和周长。import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);while(scanner.hasNextFloat()){double s=scanner.nextDouble();Square c = new Square(s);System.out.printf("%.2f %.2f\n",c.getArea(),c.getLength());c.setSide(c.getSide()*2);System.out.printf("%.2f %.2f\n",c.getArea(),c.getLength()); }} } /* 请在这里填写答案 */1 2 3以输入的浮点数作为边长创建正方型对象,输出正方型的面积和周长;将正方形的边长修改为原边长的2倍,输出修改后正方形的面积和周长。1.00 4.00 4.00 8.00 4.00 8.00 16.00 16.00 9.00 12.00 36.00 24.00
class Square
{private double s;public Square(double s){this.s=s;}public double getSide(){return s;}public double getArea(){return s*s;}public double getLength(){return s*4;}public void setSide(double s){this.s=s;}
}
6-7 学生类
设计一个名为StudentOf2019EE的类,表示2019电子信息工程专业的学生。类包含:
- String类型私有成员变量name,表示学生的姓名。
- int型私有成员变量money,表示学生可支配的金额(不能为负数)。
- int型私有静态(类)变量numberOfObjects,表示StudentOf2019EE对象的数量,初始值为0;每创建一个StudentOf2019EE对象,numberOfObjects应当加1。
- int型私有静态(类)变量clazzMoney,表示全体学生缴纳的班费余额,初始值为0。
- 构造方法StudentOf2019EE(String name),参数name用于初始化学生的姓名,可支配金额设为默认值100。
- 构造方法StudentOf2019EE(String name, int mongey),参数name用于初始化学生的姓名,参数money用于初始化学生的可支配金额。
- 为name和money添加getter和setter方法,都为公共方法。
- 公共的实例方法void payClazzMoney(int amount),表示从学生的可支配金额中支出数量为amount的金额作为班费(如果学生的可支配金额<amount,则有多少交多少班费)。
- 公共的静态方法void clazzActivity(int amount),表示班级活动,需要从班费余额支出数量为amount的金额作为活动经费(如果班费余额<amount,则有多少支出多少)。
创建三个StudentOf2019EE对象,三个对象分别支付一笔钱作为班费,最后组织一次班级活动。
import java.util.Scanner;public class Main {public static void main(String args[]){Scanner input = new Scanner(System.in);System.out.println("numberOfObjects=" + StudentOf2019EE.getNumberOfObjects() + ",clazzMoney=" + StudentOf2019EE.getClazzMoney());StudentOf2019EE a = new StudentOf2019EE("Tom");StudentOf2019EE b = new StudentOf2019EE("Jerry", 200);StudentOf2019EE c = a;a.payClazzMoney(input.nextInt());System.out.println("numberOfObjects=" + StudentOf2019EE.getNumberOfObjects() + ",clazzMoney=" + StudentOf2019EE.getClazzMoney());b.payClazzMoney(input.nextInt());System.out.println("numberOfObjects=" + StudentOf2019EE.getNumberOfObjects() + ",clazzMoney=" + StudentOf2019EE.getClazzMoney());c.payClazzMoney(input.nextInt());System.out.println("numberOfObjects=" + StudentOf2019EE.getNumberOfObjects() + ",clazzMoney=" + StudentOf2019EE.getClazzMoney());StudentOf2019EE.clazzActivity(input.nextInt());System.out.println("numberOfObjects=" + StudentOf2019EE.getNumberOfObjects() + ",clazzMoney=" + StudentOf2019EE.getClazzMoney());} }/* 请在这里填写答案 */50 300 100 400numberOfObjects=0,clazzMoney=0 numberOfObjects=2,clazzMoney=50 numberOfObjects=2,clazzMoney=250 numberOfObjects=2,clazzMoney=300 numberOfObjects=2,clazzMoney=0
class StudentOf2019EE
{private String name;private int money;private static int numberOfObjects=0; //表示StudentOf2019EE对象的数量private static int clazzMoney=0; //全体学生缴纳的班费余额public StudentOf2019EE(String name){this.name=name;money=100;numberOfObjects++;}public StudentOf2019EE(String name,int money){this.name=name;this.money=money;numberOfObjects++;}public String getName(){return name;}public int getMoney(){return money;}public void payClazzMoney(int amount){if(getMoney()>=amount){clazzMoney+=amount;money-=amount;}else {clazzMoney+=getMoney();money=0;}}public static void clazzActivity(int amount){if(clazzMoney<amount) clazzMoney-=clazzMoney;else clazzMoney-=amount;}public static int getNumberOfObjects(){return numberOfObjects;}public static int getClazzMoney(){return clazzMoney;}
}
6-8 数组求和
static int sum(int[] a)
{int s=0;for(int x:a) s+=x;return s;
}static int sum(int[] a,int start)
{int s=0;for(int i=start;i<a.length;i++) s+=a[i];return s;
}static int sum(int[] a,int start,int end)
{int s=0;for(int i=start;i<end;i++) s+=a[i];return s;
}
6-9 Rectangle类
构造一个Rectangle类表示矩形 , 该类实现了Comparable接口。
- 该类有两个私有的double型成员变量width和height,表示矩形的宽度和高度;
- 该类有一个带一个无参的构造方法,把宽带和高度都初始化为0;
- 该类有一个带两个double型参数的构造方法,用参数的值初始化矩形的宽度和高度。
- 为width和height添加getter()和setter()方法。注意,宽度和高度必须大于等于0,如果setWidth(double width)方法的参数小于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"矩形的宽度必须大于等于0";setHeight(double height)方法的参数小于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"矩形的高度必须大于等于0"。
- getArea()方法,返回矩形的面积;
- getgetPerimeter()方法,返回矩形的周长;
- 该类有一个公共的方法int compareTo(Rectangle rectangle),比较当前对象和参数。如果当前对象的面积大于参数的面积,返回1;当前对象的面积小于参数的面积,返回-1;否则返回0。
- 该类有一个公共方法toString(),根据矩形的宽度和高度生成并返回一个字符串(具体要求看输出样例)。
构造一个Main ,执行一个for循环,共循环6次。每次循环从键盘读入数据创建两个矩形对象,比较并输出其中较大的对象的面积;如果捕捉到异常,则输出异常信息。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);for(int i=0; i<6; i++) {try{Rectangle rectangle1 = new Rectangle(input.nextDouble(), input.nextDouble());Rectangle rectangle2 = new Rectangle(input.nextDouble(), input.nextDouble());Rectangle maxRectangle;if (rectangle1.compareTo(rectangle2)>= 0)maxRectangle = rectangle1;elsemaxRectangle = rectangle2;System.out.println("The max area of " + rectangle1 + " and " + rectangle2 + " is " + maxRectangle.getArea());} catch (IllegalArgumentException e1) {System.out.println(e1.getMessage());input.nextLine();} catch (Exception e2) {System.out.println(e2.getMessage());input.nextLine();}}} } /* 请在这里填写答案 */
-1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 3 4 2 5 3 4 2 7矩形的宽度必须大于等于0 矩形的高度必须大于等于0 矩形的宽度必须大于等于0 矩形的高度必须大于等于0 The max area of Rectangle(width:3.0,height:4.0) and Rectangle(width:2.0,height:5.0) is 12.0 The max area of Rectangle(width:3.0,height:4.0) and Rectangle(width:2.0,height:7.0) is 14.0
class Rectangle implements Comparable<Rectangle>
{private double width;private double height;public Rectangle(){width=0;height=0;}public Rectangle(double width,double height){setWidth(width);setHeight(height);}public void setWidth(double width){if(width>=0) this.width=width;else throw new IllegalArgumentException("矩形的宽度必须大于等于0");}public void setHeight(double height){if(height>=0) this.height=height;else throw new IllegalArgumentException("矩形的高度必须大于等于0");}public double getArea(){return height*width; }public double getPerimeter(){return (height+width)*2;}public int compareTo(Rectangle o){if(getArea()>o.getArea()) return 1;else if(getArea()==o.getArea()) return 0;else return -1;}public String toString(){return "Rectangle(width:"+width+",height:"+height+")";}
}
五、编程题
7-1 设计一个矩形类Rectangle
编写一个Java应用程序,该程序包含两个类,类的定义如下:
(1) 一个有关计算矩形面积的类Rectangle,定义如下成员:
- ① 两个私有的成员变量:length(长,double类型)、width(宽,double类型);
- ② 一个公有的无参数的构造方法,该构造方法将所有成员变量初始化为零;
- ③ 一个公有的有参数的方法void setXY(double a, double b),该方法用于设置矩形的属性length与width;
- ④ 一个公有的无参数的方法double getArea( ),该方法计算并返回矩形的面积;
- ⑤一个公有的无参数的方法double getPerimeter( ),该方法计算并返回矩形的周长;
(2) 一个测试类Main,在main方法中声明1个Rectangle类的对象rect,通过setXY方法给rect的属性length和width进行赋值(从键盘输入),通过getArea方法来计算rect的面积,通过getPerimeter方法来计算rect的周长,然后输出其面积与周长。
import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);double l=sc.nextDouble(),w=sc.nextDouble();Rectangle rect=new Rectangle();rect.setXY(l,w);System.out.printf("面积为%.1f\n",rect.getArea());System.out.printf("周长为%.1f",rect.getPerimeter());}
}class Rectangle
{private double l;private double w;public Rectangle(){l=0;w=0;}public void setXY(double a,double b){l=a;w=b;}public double getArea(){return l*w;}public double getPerimeter(){return (l+w)*2;}
}
7-2 重复数据问题
import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);String s=sc.nextLine();String[] a=s.split(" ");Set<Integer> st=new HashSet<>();for(String x:a){int t=Integer.parseInt(x);st.add(t);}if(st.size()==a.length) System.out.print("no");else System.out.print("yes");}
}
7-3 矩阵相加
import java.util.Scanner;class Main
{public static Scanner scan=new Scanner(System.in);public static void main(String[] args){int m=scan.nextInt(),n=scan.nextInt();int[][] a=new int[m][n];inputData(a);int[][] b=new int[m][n];inputData(b);int[][] c=new int[m][m];c=addMatrix(a,b);showResult(c);}public static void inputData(int[][] arr){for(int i =0;i<arr.length;i++)for(int j=0;j<arr[i].length;j++)arr[i][j] =scan.nextInt();}public static int[][] addMatrix(int[][]arr1,int[][]arr2){int [][] c = new int[arr1.length][arr1[0].length];for(int i =0;i<arr1.length;i++)for(int j =0;j<arr1[i].length;j++)c[i][j] = arr1[i][j] + arr2[i][j];return c;}public static void showResult(int[][] arr){for(int i =0;i<arr.length;i++){for(int j =0;j<arr[i].length;j++)System.out.print(" "+arr[i][j]);System.out.println();}}}
7-4 身体质量指数(BMI)测算
import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);double w=sc.nextDouble(),h=sc.nextDouble();if(h<=0.0||h>2.72||w<=0.0||w>727) System.out.print("input out of range");else{double bmi=w/(h*h);if(bmi<18.5) System.out.print("thin");else if(bmi>=18.5&&bmi<24) System.out.print("fit");else if(bmi>=24&&bmi<28) System.out.print("overweight");else System.out.print("fat");}}
}
7-5 闰年判断
import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int year=sc.nextInt();if((year%4==0&&year%100!=0)||year%400==0) System.out.print("yes");else System.out.print("no");}
}
相关文章:
【Java期末复习】《面向对象程序设计》练习库
目录 一、单选题 二、填空题 三、程序填空题 1、 super使用--有如下父类和子类的定义,根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类,求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…...
照片文件损坏能修复吗?
很多时候,我们都是把相机拍的照片保存在电脑上,或手机照片太多,也会上传到电脑里保存。这样就能腾出更多的存储空间。但在电脑里的照片文件有时会莫名其妙的损坏,提示已损坏等情况,一旦发生这样的事,这些照…...
Git分布式版本控制工具
1:目标了解Git基本概念 能够概述git工作流程 能够使用Git常用命令 熟悉Git代码托管服务 能够使用idea操作git 2:概述2.1:开发中的实际场景场景一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间ÿ…...
Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查导入默认包和环境元素定位创建一个sqlit3表将爬虫到的信…...
最全Linux驱动开发全流程详细解析(持续更新)
Linux驱动开发详细解析 一、驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器(实现控制的方式)完成设备的轮询、中断处理、DMA通信(CPU与外设通信的方式)进行物理内存…...
华为OD机试 - 乱序整数序列两数之和绝对值最小 | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...
网上插画教学哪家质量好,汇总5大插画培训班
网上插画教学哪家质量好?给大家梳理了国内5家专业的插画师培训班,最新五大插画班排行榜,各有优势和特色! 一:国内知名插画培训机构排名 1、轻微课(五颗星) 主打课程有日系插画、游戏原画、古风插…...
对云原生集群网络流量可观测性的一点思考
问题背景 在云原生技术的广泛普及和实施过程中,笔者接触到的很多用户需求里都涉及到对云原生集群的可观测性要求。 实现集群的可观测性,是进行集群安全防护的前提条件 。而在可观测性的需求中,集群中容器和容器之间网络流量的可观测性需求是…...
借力英特尔® Smart Edge,灵雀云 ACP 5G 专网解决方案获得多维度优化加速
近日,灵雀云联合英特尔推出了集成Smart Edge 模块的灵雀云 ACP 5G 专网解决方案,同时共同发布了《借力英特尔 Smart Edge,基于云原生解决方案的灵雀云 ACP 5G 专网版本获得多维度优化加速》白皮书。 得益于云计算技术和 5G 网络的高速发展&am…...
【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示
文章目录一、项目思路二、环境配置1.1、PaddlenHub模块(飞桨预训练模型应用工具)(1)预训练模型:pyramidbox_lite_mobile_mask(2)face_detection人脸检测模型(默认为 pyramidbox_lite…...
EasyExcel 让Excel导入导出更简单
一、什么是EasyExcel?二、对比ApachePoi 其他Excel框架 优势在于哪里三、本质上对于原生做了哪些优化?四、有哪些功能五、如何实践? 5.1 常规文件读取5.2 常规文件写入5.3 常规WEB的上传和下载 一、什么是EasyExcel? EasyExcel是对07版POI的提升和优…...
华为OD机试 - 需要广播的服务器数量 | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...
三次握手四次挥手详细解析面试常问
文章目录1.第2次握手传回了ACK,为什么还要传回SYN?2.断开连接-TCP 四次挥手3.为什么要四次挥手?4.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?5.如果第二次挥手时服务器的 ACK 没有送达客户端&#x…...
组合由于继承
目录 前言: 1.什么是继承? 2.继承的劣势、问题? 3.组合相比继承有哪些优势? 4、如何判断该用组合还是继承? 参考资料 前言: 我们在平时日常开发设计的过程中,经常会有人提到一条经典的设…...
大学计算机基础 知识点总结
一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机:ENIAC,美国&#…...
手撸React组件库前必须清楚的9个问题
1. 组件库文档问题 以前常用的组件库文档storybook,包括现在也有用dumi、vitepress做组件库文档等。storybook缺点不美观、webpack的热更新太慢,虽然新版本支持了vite提高了速度但还不算稳定。好在各种文档、mdx、测试等组件第三方工具很多集成进去能很…...
试用国内及国外AI绘图软件后的总结
最近AI很火,所以这几天抱着试试看的角度试用了多款AI绘图软件,大概测试了市面上的3款工具吧,3款国外的,1款国内的。因为有对比,波哥也不是专业的评测机构出身,所以这些比对无论是从角度,还是从对…...
DJI 无人机 Onboard SDK ROS 功能包demo运行
DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例 dji sdk 的节点…...
揭开JavaWeb中Cookie与Session的神秘面纱
文章目录1,会话跟踪技术的概述2,Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3,Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1 Session…...
2023-02-20 Qt 5.13.1 + OpenCV 4.5.4环境编译
引言 OpenCV图像处理在Qt中编译记录。 之前一直是在Python中使用OpenCV,Python中使用某些模块使用pip工具很容易将对应的模块安装在系统中。根据项目需求项目都要转移在国产化中使用,为了适应国产化需求,将代码转移到Qt开发环境中,…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
