众所周知,最近在复习基础知识,最近看到了不少习题,想我好歹也是。。。,没想到结果竟是如此打脸,只考虑代码的基础功能,完全没有思考过代码的健壮性!
此时此刻,只想对我自己说,眼高手低不能有,不动脑思考代码的健壮性更是要不得!
题目:编写类A01,定义方法max,实现求某个double数组的最大值,并返回
下面是修改之前的代码:
/** * @ClassName Test07 练习 * @Description TODO * @Author Administrator * @Date 2022/4/24 19:59 * @Version 1.0 */ public class Test07 { public static void main(String[] args) { /* 编写类A01,定义方法max,实现求某个double数组的最大值,并返回 */ double arr[] = {12, 13, 14, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1}; A01 a01 = new A01(arr); double max = a01.max(arr); } } //A01 class A01 { double[] arr; //返回值类型double,方法名max,参数列表为double 数组,方法体可用遍历实现 public A01(double[] arr) { this.arr = arr; } public double max(double arr[]) { //定义最大值 double maxer = this.arr[0]; //循环查找, for (int i = 0; i < this.arr.length; i++) { if (maxer < this.arr[i]) { maxer = this.arr[i]; } } return maxer; } }
代码的实现我想很多人都能够实现,我想我的技术发展受到局限,多半是因为懒得思考,加上眼高手低的臭毛病!
public class Test07 { public static void main(String[] args) { /* 编写类A01,定义方法max,实现求某个double数组的最大值,并返回 */ double arr[] = {}; A01 a01 = new A01(arr); Double max = a01.max(arr); if(max!=null){ //当数组不为空 System.out.println("此数组最大值为:"+a01.max(arr)); }else{ //当数组为空 System.out.println("输入有误"); } } } //A01 class A01 { double[] arr; //返回值类型double,方法名max,参数列表为double 数组,方法体可用遍历实现 public A01(double[] arr) { this.arr = arr; } public Double max(double arr[]) { //数组为空的情况没有考虑 if (arr.length > 0) { //定义最大值 double maxer = this.arr[0]; //循环查找, for (int i = 0; i < this.arr.length; i++) { if (maxer < this.arr[i]) { maxer = this.arr[i]; } } return maxer; }else{ //这里必须要求返回值,实际上,写double类型的任意数字,都有可能是数组的最大值的可能性存在。 //所以这里返回null,会报错,随后将返回值类型修改为double的包装类型,Double。包装类是可以允许为null //然后在主方法中对返回结果做判断。 return null; } } }
当数组为空,运行结果如下。