目录
1、 super使用--有如下父类和子类的定义,根据要求填写代码
一、单选题
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;
-
}
-
-
@Override
-
public 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;
-
else
-
maxHouse=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;
-
else
-
maxRectangle=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;
-
else
-
throw
new
IllegalArgumentException(
"矩形的宽度必须大于等于0");
-
}
-
-
public
double
getHeight
() {
-
return height;
-
}
-
-
public
void
setHeight
(double height) {
-
if(height>=
0)
-
this.height = height;
-
else
-
throw
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;
-
else
-
return
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;
-
}
-
-
@Override
-
public 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.5 38.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.78 8.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 23 name: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 400 numberOfObjects= 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; else maxRectangle = 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");
-
}
-
}
转载:https://blog.csdn.net/weixin_61639349/article/details/129117866