在实现求取某个double数组最大值时,发现使用double作为方法返回值类型时不能返回“null"。
// 需求:编写类A01,定义方法max,实现求某个double数组的最大值,并返回 public class project{?? ? public static void main(String [] args){ ?? ?A01 a01 = new A01();? ?? ?double[] arr = {1,2}; ? ? Double res = a01.max(arr); ?? ?if(res != null){ ?? ??? ?System.out.println("arr的最大值=" + res); ?? ?}else{ ?? ??? ?System.out.println("arr的输入有误"); ?? ?} ? } } class A01{ ?? ? ?? ??? ?public double max(double[] arr){ ?
?? ??? ??? ?if(arr != null && arr.length >0){
?? ??? ? ?double max=arr[0]; ?? ??? ? ?for(int i =1; i < arr.length ;i++){
? ? ? ? ? if (max < arr[i] ){
? ? ? ? ? ?? ?max = arr[i]; ? ? ? ? ? ?} ? ? ? ? ? ? ?} ? ? ? ? ? return max; ?? ??? ? ?}
? ? ? ? ? else { ?? ??? ? ??? ?return null; ?? ??? ?} ?? ??? ? ? ?? ?} }
以下是编译结果:?
project.java:32: 错误: 不兼容的类型: <空值>无法转换为double ? ? ? ? ? ? ? ? ? ? ? ? return null;
究其原因,double是基本数据类型,而基本数据类型不能赋null值;?Double是包装类型,包装类型与基本数据类型的区别之一是:初始值不同,比如:int的初始值为0、boolean的初始值为false,而包装类型的初始值为null。
将double改为Double后程序成功编译运行??
// 需求:编写类A01,定义方法max,实现求某个double数组的最大值,并返回 public class project{?? ? public static void main(String [] args){ ?? ?A01 a01 = new A01();? ?? ?double[] arr = {1,2}; ? ? Double res = a01.max(arr); ?? ?if(res != null){ ?? ??? ?System.out.println("arr的最大值=" + res); ?? ?}else{ ?? ??? ?System.out.println("arr的输入有误"); ?? ?} ? } } class A01{ ?? ? ?? ??? ?public double max(double[] arr){ ?
?? ??? ??? ?if(arr != null && arr.length >0){
?? ??? ? ?double max=arr[0]; ?? ??? ? ?for(int i =1; i < arr.length ;i++){
? ? ? ? ? if (max < arr[i] ){
? ? ? ? ? ?? ?max = arr[i]; ? ? ? ? ? ?} ? ? ? ? ? ? ?} ? ? ? ? ? return max; ?? ??? ? ?}
? ? ? ? ? ? ?else { ?? ??? ? ??? ?return null; ?? ??? ?} ?? ??? ? ? ?? ?} }
?编译结果:
arr的最大值=2.0
|