JAVA刷题集|刷题的狂欢-----JAVA每日三练-----第十天

努力刷题,每日三题,题目来源于《Java课后实战训练手册》----清华大学出版社。
第一题
模拟老师上课前的点名过程,并将旷课的学生作为异常抛出:张三、李四、王五(老师在点名册上记下了“王五旷课”),实现效果如图所示。
JAVA刷题集|刷题的狂欢-----JAVA每日三练-----第十天
文章图片

class Person { private String job; public String getJob() {return job; } public void setJob(String job) {this.job = job; } public void say(String words) {System.out.println(job + ":" + words); } }public class CallTheRoll { public static void main(String[] args) {try {Person person1 = new Person(); // 创建对象person1 person1.setJob("老师"); // 设置对象person1的“职称” person1.say("同学们早上好!现在我们开始点名..."); // 设置对象person1说话的内容Person person2 = new Person(); // 创建对象person2 person2.setJob("班长"); // 设置对象person2的“职称” person2.say("大家保持安静!准备上课..."); // 设置对象person2说话的内容person1.say("张三!"); // 设置对象person1说话的内容Person person3 = new Person(); // 创建对象person3 person3.setJob("同学张三"); // 设置对象person3的“职称” person3.say("到!"); // 设置对象person3说话的内容person1.say("李四!"); // 设置对象person1说话的内容Person person4 = new Person(); // 创建对象person4 person4.setJob("同学李四"); // 设置对象person4的“职称” person4.say("Here!"); // 设置对象person4说话的内容person1.say("下次说中文。下一个!\n王五!"); // 设置对象person1说话的内容Person person5 = new Person(); // 创建对象person5 person5.setJob("同学王五"); // 设置对象person5的“职称” person5.say("...."); // 设置对象person5说话的内容person1.say("王五!"); // 设置对象person1说话的内容person5.say("...."); // 设置对象person5说话的内容throw new Exception("抛出异常:老师在点名册上记下了“王五旷课”!!!"); // 抛出异常 } catch (Exception e) { // catch块 System.out.println(e.getMessage()); // 输出异常的信息 } finally {System.out.println("老师:今天点名到此结束。现在开始上课!"); // 控制台输出 } } }

第二题
当某种商品的价格过高时,国家会对这种商品采取宏观调控,进而使得这种商品的价格趋于稳定。编写一个程序,规定西红柿单价不得超过7元,超过7元的情况作为异常抛出,运行结果如图所示。
JAVA刷题集|刷题的狂欢-----JAVA每日三练-----第十天
文章图片

import java.util.Scanner; class PriceException extends Exception { // 自定义价格异常类,并继承异常类 public PriceException(String message) {super(message); // 调用异常类的有参构造方法 } } public class Tomato {private double price; public double getPrice() {return price; }// 设置西红柿单价,如果产生价格异常,那么就抛出价格异常 public void setPrice(double price) throws PriceException {if (price > 7.0) {throw new PriceException("国家规定西红柿单价不得超过7元!!!"); } else {this.price = price; // 为西红柿类的price属性赋值 } } public static void main(String[] args) {Scanner sc = new Scanner(System.in); System.out.println("今天的西红柿单价(单价格式为“3.00”):"); String dayPrice = sc.next(); // 把控制台输入的西红柿单价赋值给变量dayPrice if (dayPrice.length() == 4) { // 控制台输入的字符串长度为4时 // 将String类型的西红柿单价转换为double类型 double unitPriceDou = Double.parseDouble(dayPrice); Tomato tomato = new Tomato(); try { // 把可能产生异常的Java代码放在try中 tomato.setPrice(unitPriceDou); // 西红柿对象调用设置西红柿单价的方法 } catch (Exception e) { // 捕捉数组元素下标越界异常对象 System.out.println(e.getMessage()); } finally {sc.close(); } } else { // 控制台输入的字符串长度不为4时 System.out.println("违规操作:" + "输入西红柿单价时小数点后须保留两位有效数字(如3.00)!"); } } }

第三题
通常需要通过两步来求出一个数组中元素的最大值和最小值。现使用静态内部类来实现通过一次遍历,求出一个数组中元素的最大值和最小值。
JAVA刷题集|刷题的狂欢-----JAVA每日三练-----第十天
文章图片

//MaxMin.java public class MaxMin {public static class Result {private double max; private double min; public Result(double max, double min) {this.max = max; this.min = min; }public double getMax() {return max; }public double getMin() {return min; } }public static Result getResult(double[] array) {double max = Double.MIN_VALUE; double min = Double.MAX_VALUE; for (double i : array) {if (i > max) {max = i; } if (i < min) {min = i; } } return new Result(max, min); } }

//Test.java public class Test {public static void main(String[] args) {double[] array = new double[5]; for (int i = 0; i < array.length; i++) {array[i] = 100*Math.random(); } System.out.println("源数组:"); for (int i = 0; i < array.length; i++) {System.out.println(array[i]); } System.out.println("最大值:"+MaxMin.getResult(array).getMax()); System.out.println("最小值:"+MaxMin.getResult(array).getMin()); } }

补充:
Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。
【JAVA刷题集|刷题的狂欢-----JAVA每日三练-----第十天】感谢支持!

    推荐阅读