当前位置: 首页 > news >正文

【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使用--有如下父类和子类的定义&#xff0c;根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类&#xff0c;求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…...

照片文件损坏能修复吗?

很多时候&#xff0c;我们都是把相机拍的照片保存在电脑上&#xff0c;或手机照片太多&#xff0c;也会上传到电脑里保存。这样就能腾出更多的存储空间。但在电脑里的照片文件有时会莫名其妙的损坏&#xff0c;提示已损坏等情况&#xff0c;一旦发生这样的事&#xff0c;这些照…...

Git分布式版本控制工具

1&#xff1a;目标了解Git基本概念 能够概述git工作流程 能够使用Git常用命令 熟悉Git代码托管服务 能够使用idea操作git 2&#xff1a;概述2.1&#xff1a;开发中的实际场景场景一&#xff1a;备份 小明负责的模块就要完成了&#xff0c;就在即将Release之前的一瞬间&#xff…...

Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查

之前的文章有关于更多操作方式详细解答&#xff0c;本篇基于前面的知识点进行操作&#xff0c;如果不了解可以先看之前的文章 Python爬虫&#xff08;8&#xff09;selenium爬虫后数据&#xff0c;存入sqlit3实现增删改查导入默认包和环境元素定位创建一个sqlit3表将爬虫到的信…...

最全Linux驱动开发全流程详细解析(持续更新)

Linux驱动开发详细解析 一、驱动概念 驱动与底层硬件直接打交道&#xff0c;充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器&#xff08;实现控制的方式&#xff09;完成设备的轮询、中断处理、DMA通信&#xff08;CPU与外设通信的方式&#xff09;进行物理内存…...

华为OD机试 - 乱序整数序列两数之和绝对值最小 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

网上插画教学哪家质量好,汇总5大插画培训班

网上插画教学哪家质量好&#xff1f;给大家梳理了国内5家专业的插画师培训班&#xff0c;最新五大插画班排行榜&#xff0c;各有优势和特色&#xff01; 一&#xff1a;国内知名插画培训机构排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日系插画、游戏原画、古风插…...

对云原生集群网络流量可观测性的一点思考

问题背景 在云原生技术的广泛普及和实施过程中&#xff0c;笔者接触到的很多用户需求里都涉及到对云原生集群的可观测性要求。 实现集群的可观测性&#xff0c;是进行集群安全防护的前提条件 。而在可观测性的需求中&#xff0c;集群中容器和容器之间网络流量的可观测性需求是…...

借力英特尔® Smart Edge,灵雀云 ACP 5G 专网解决方案获得多维度优化加速

近日&#xff0c;灵雀云联合英特尔推出了集成Smart Edge 模块的灵雀云 ACP 5G 专网解决方案&#xff0c;同时共同发布了《借力英特尔 Smart Edge&#xff0c;基于云原生解决方案的灵雀云 ACP 5G 专网版本获得多维度优化加速》白皮书。 得益于云计算技术和 5G 网络的高速发展&am…...

【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示

文章目录一、项目思路二、环境配置1.1、PaddlenHub模块&#xff08;飞桨预训练模型应用工具&#xff09;&#xff08;1&#xff09;预训练模型&#xff1a;pyramidbox_lite_mobile_mask&#xff08;2&#xff09;face_detection人脸检测模型&#xff08;默认为 pyramidbox_lite…...

EasyExcel 让Excel导入导出更简单

一、什么是EasyExcel?二、对比ApachePoi 其他Excel框架 优势在于哪里三、本质上对于原生做了哪些优化&#xff1f;四、有哪些功能五、如何实践&#xff1f; 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&#xff0c;为什么还要传回SYN&#xff1f;2.断开连接-TCP 四次挥手3.为什么要四次挥手&#xff1f;4.为什么不能把服务器发送的 ACK 和 FIN 合并起来&#xff0c;变成三次挥手&#xff1f;5.如果第二次挥手时服务器的 ACK 没有送达客户端&#x…...

组合由于继承

目录 前言&#xff1a; 1.什么是继承&#xff1f; 2.继承的劣势、问题&#xff1f; 3.组合相比继承有哪些优势&#xff1f; 4、如何判断该用组合还是继承&#xff1f; 参考资料 前言&#xff1a; 我们在平时日常开发设计的过程中&#xff0c;经常会有人提到一条经典的设…...

大学计算机基础 知识点总结

一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为&#xff1a;速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机&#xff1a;ENIAC&#xff0c;美国&#…...

手撸React组件库前必须清楚的9个问题

1. 组件库文档问题 以前常用的组件库文档storybook&#xff0c;包括现在也有用dumi、vitepress做组件库文档等。storybook缺点不美观、webpack的热更新太慢&#xff0c;虽然新版本支持了vite提高了速度但还不算稳定。好在各种文档、mdx、测试等组件第三方工具很多集成进去能很…...

试用国内及国外AI绘图软件后的总结

最近AI很火&#xff0c;所以这几天抱着试试看的角度试用了多款AI绘图软件&#xff0c;大概测试了市面上的3款工具吧&#xff0c;3款国外的&#xff0c;1款国内的。因为有对比&#xff0c;波哥也不是专业的评测机构出身&#xff0c;所以这些比对无论是从角度&#xff0c;还是从对…...

DJI 无人机 Onboard SDK ROS 功能包demo运行

DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后&#xff0c;功能包自身具备一些写好的demo功能案例 dji sdk 的节点…...

揭开JavaWeb中Cookie与Session的神秘面纱

文章目录1&#xff0c;会话跟踪技术的概述2&#xff0c;Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3&#xff0c;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&#xff0c;Python中使用某些模块使用pip工具很容易将对应的模块安装在系统中。根据项目需求项目都要转移在国产化中使用&#xff0c;为了适应国产化需求&#xff0c;将代码转移到Qt开发环境中&#xff0c…...

word为跨页表格新加表头和表名

问题&#xff1a; 当表格过长需要跨页时&#xff08;如下图所示&#xff09;&#xff0c;某些格式要求需要转页接排加续表。 方法一&#xff1a; 1、选中表格&#xff0c;在“表布局”区域点开“自动调整”&#xff0c;选择“固定列宽”&#xff08;防止后续拆分表格后表格变…...

AI+微信小程序:智能客服、个性化推荐等场景的落地实践

在移动互联网流量红利逐渐见顶的今天,微信小程序凭借“即用即走”的轻量化特性,已成为企业连接用户的核心阵地。而AI技术的融入,正让小程序从工具型应用进化为“懂用户、会思考”的智能服务终端。本文将结合实际案例,解析AI在微信小程序中的两大核心场景——智能客服与个性…...

R 语言科研绘图第 52 期 --- 网络图-分组

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

kafka 常用知识点

文章目录 前言kafka 常用知识点1. kafka 概念2. 消息共享和广播3. 分区和副本数量奇偶数 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0…...

前端生成UUID

UUID(Universally Unique Identifier)是一种在分布式系统中广泛使用的标识符,具有全球唯一性。在前端开发中,生成可靠的UUID对于数据追踪、会话管理、缓存键生成等场景至关重要。接下来将深入探讨UUID的实现原理、前端生成方案及最佳实践。 一、UUID标准与版本 1. UUID结构…...

List 源码翻译

List 源码翻译-jdk1.8 翻译来自 AI 大模型。 全部源码翻译下载 /** 版权所有 (c) 1997, 2014, Oracle 和/或其附属公司。保留所有权利。* ORACLE 专有/机密。使用受许可条款约束。*********************/package java.util;import java.util.function.UnaryOperator;/*** 有序…...

在Linux上安装Docker并配置镜像加速器:从入门到实战

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 Docker作为容器化技术的标杆工具&#xff0c;已经成为现代软件开发和运维的必备技能。对于程序员和技术爱好者来说&#xff0c;在Linux系统上搭建D…...

力扣HOT100之动态规划:152. 乘积最大子数组

这道题并不是代码随想录里的&#xff0c;我试着用动规五部曲来做&#xff0c;然后不能通过全部测试样例&#xff0c;在第109个测试样例卡住了&#xff0c;如下所示。 原因是可能负数乘以负数会得到最大的乘积&#xff0c;不能单纯地用上一个序列的最大值乘以当前值来判断是否能…...

[STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时

有很多文章说明了由于HAL_Delay()函数的本质是系统定时器计数&#xff0c;通过全局变量uwTick的不断增加实现的比较延迟。调用HAL_Delay()函数会阻塞其他工作&#xff0c;因此在外设ISR进程调用该延迟时&#xff0c;要特别小心。 因此&#xff0c;现在考虑&#xff0c;既然系统…...

小型图书管理系统案例(用于spring mvc 实践)

小型图书管理系统案例 (Spring MVC Spring Data JPA Thymeleaf) 本项目案例旨在基于先前模块学习的 Spring MVC 知识&#xff0c;构建一个贴近企业实际的简单 Web 应用&#xff1a;小型图书管理系统。通过实现图书的 CRUD 操作、列表展示&#xff08;含分页概念&#xff09;…...