填空题(总分:10.00)
1、Java程序中使用【 import 】关键字导入外部的包。
2、使用【 final 】关键字声明的类不能有子类。
4、JVM是【 Java Virtual Machine 】的英文简写。
5、面向对象编程思想的三个特性是【封装】、【继承】、【多态】。
编程题 (总分:70.00)
1、编程题一一话费及其异常处理 (分值:30.00)
【问题描述】
(1) 定义了一个接口Pay Able,包含计算电话话费的方法pay(),该方法抛出Pay Exception类型异常。
(2) 定义抽象电话类Phone,包括属性号码code。
(3) 定义手机类Mobile Phone继承Phone类,包含属性有通话时间time,话费单价price;定义三个参数的构造方法,完成号码、通话时间、话费的初始化;Mobile Phone类实现Pay Able接口计算话费。话费计算方法:手机类话费=通话时间*话费单价+上网费用+短信费用。
(3 )自定义异常类Pay Exception,表示话费小于0的异常,计算话费时如果小于0则抛出异常。
(4) 定义测试类,声明一个手机号码为13988888888的手机,并在测试类中处理异常。
【输入形式】输入通话时长,话费单价
【输出形式】话费结果或者异常
【样例输入】10 0.5
【样例输出】Fee=5.0
【样例输入】0 0.7
【样例输出】
Exception isPayException:Fee is 0!
Fee=0.0
【样例说明】
【评分标准】
package com.考试测试.Demo01;import java.util.Scanner;/*** 1、编程题一一话费及其异常处理 (分值:30.00)** @author 为一道彩虹*/
public class Solution01
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int time = scanner.nextInt();float price = scanner.nextFloat();scanner.close();MobilePhone mobilePhone = new MobilePhone("13988888888", time, price);float Fee = 0;try {Fee = mobilePhone.pay();System.out.println("Fee=" + Fee);} catch (PayException e) {System.out.println("Exception isPayException:"+ e.getMessage());System.out.println("Fee=" + Fee);}}
}interface PayAble
{// 计算话费float pay() throws PayException;
}abstract class Phone
{// 号码String code;public Phone(String code){this.code = code;}
}class MobilePhone extends Phone implements PayAble
{int time;float price;public MobilePhone(String code, int time, float price){super(code);this.time = time;this.price = price;}@Overridepublic float pay() throws PayException{float Fee = time * price + 0 + 0;if (Fee <= 0){throw new PayException("Fee is 0!");}return Fee;}
}class PayException extends Exception
{public PayException(String message){super(message);}
}
2、交换两个数(分值:20.00)
【问题描述】输入两个数,实现两个数的交换,并输出交换后的结果。
【输入形式】输入两个整数,放在一行,空格隔开
【输出形式】输出交换后的整数,放在两行,先输出后输入的整数
【样例输入】
2 14
【样例输出】
14
2
【样例说明】无
package com.考试测试.Demo01;import java.util.Scanner;/*** 2、交换两个数(分值:20.00)** @author 为一道彩虹*/
public class Solution02
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();// 方式1 使用临时变量
// int temp = n;
// n = m;
// m = temp;
// System.out.println(n);
// System.out.println();
// System.out.println(m);// 方式2 使用加减法n = n + m;m = n - m;n = n - m;System.out.println(n);System.out.println();System.out.println(m);}
}
3、编程实现类图(分值:20.00)
【问题描述】编程实现如下所示类图:
(1) 对于Shape:类的getArea方法,可以是空函数,而对于Rectangle和Circle类的getArea方法,需要真正实现其功能,即计算相应图形的面积,题中PI=3.1415926。
(2) Rectangle和Circle类的构造函数需要实现
(3) 定义测试类,需要测试以下情形,单个对象(Rectangle、Circle)、数组化(即定义一个对
象数组,包含若干个Rectangle、Circle的对象),依次接收数据,不同对象之间的数据用逗号分隔,输出对应的面积。
【输入形式】
图形个数和图形属性,属性用空格隔开,不同对象用逗号分隔
【输出形式】面积
【样例输入1】1 3 4
【样例输出1】12.0
【样例输入2】1 2
【样例输出2】12.56
【样例输入2】2 3 4,2
【样例输出2】24.56
【样例说明】
【评分标准】
package com.考试测试.Demo01;import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;/*** 3、编程实现类图(分值:20.00)** @author 为一道彩虹*/
public class Solution03
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();String[] array = null;double area = 0;DecimalFormat decimalFormat = new DecimalFormat("#.##");decimalFormat.setRoundingMode(RoundingMode.DOWN);// 如果 n范围(n-1>n && n <= 1]if (n == 1){array = scanner.nextLine().trim().split(" ");if (array.length != 1){Rectangle rectangle = new Rectangle(Double.parseDouble(array[0]), Double.parseDouble(array[1]));area = rectangle.getArea();System.out.println(area);}else{Circle circle = new Circle(Double.parseDouble(array[0]));area = Double.parseDouble(decimalFormat.format(circle.getArea()));System.out.println(area);}}else{array = scanner.nextLine().trim().split(",");Shape[] shapes = new Shape[n];for (int i = 0; i < array.length; i++){String[] arr = array[i].split(" ");if (arr.length != 1){Rectangle rectangle = new Rectangle(Double.parseDouble(arr[0]), Double.parseDouble(arr[1]));shapes[i] = rectangle;}else{Circle circle = new Circle(Double.parseDouble(arr[0]));shapes[i] = circle;}}for (Shape shape : shapes){area += shape.getArea();}System.out.println(decimalFormat.format(area));}}
}class Shape
{private double area;public double getArea(){return area;}
}class Rectangle extends Shape
{double length;double width;public Rectangle(double length, double width){this.length = length;this.width = width;}@Overridepublic double getArea(){return length * width;}
}class Circle extends Shape
{double radius;public Circle(double radius){this.radius = radius;}@Overridepublic double getArea(){return Math.PI * radius * radius;}
}
接口编程题
显示Person子类学生类信息2
【问题描述】
设计学生类Student,继承类Person,显示学生姓名和成绩。测试类Test在驱动代码中,无需再重新编写。
增加Student类,运行Test类。
public class Test
{public static void main(String[] args){Person s = new Student("lisi", 23, 86.0);s.display();}
}
[注意要点本类接口文件可以直接下载,只需编写Student类目类文件需存放在默认包中。
[输入形式】无
【输出形式】
Name=lisi
Grade=86.0
【样例输入】
【样例输出】
【样例说明】
【评分标准】
package com.考试测试.Demo01;/*** 接口编程题** 显示Person子类学生类信息2** @author 为一道彩虹*/
public class Solution04
{public static void main(String[] args){Person s = new Student("lisi", 23, 86.0);s.display();}
}class Person
{String name;int age;public Person(String name, int age){this.name = name;this.age = age;}public void display(){}
}class Student extends Person
{double grade;public Student(String name, int age, double grade){super(name, age);this.grade = grade;}@Overridepublic void display(){System.out.println("Name=" + name);System.out.println("Grade=" + grade);}
}
先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!