class Max{
//定义一个方法max,形参为double数组,返回类型为double
public double max(double[] doubleArr){
//假定double数组的第一个元素为最大值
double max = doubleArr[0];
for(int i = 1; i < doubleArr.length; i++){
//遍历数组,将数组中的每个元素与max比较,若比max大则将其赋给max
if(doubleArr[i] > max){
max = doubleArr[i];
}
}
return max;
}
}
在main方法中调用max方法
public class MaxTest {
public static void main(String[] args) {
//定义一个double数组,并静态初始化
double[] doubleArr = {10.1, 2.1, 1, 2.6};
//创建Max类的对象maxTest
Max maxTest = new Max();
System.out.println("double数组中的最大值为:" + maxTest.max(doubleArr));
}
}
以上代码运行截图
先完成后健壮代码
1.假设double数组中没有数值,即double[] doubleArr = {};
会出现异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
数组长度为0,不能再使用doubleArr[0]
解决方法
在max方法中进行寻找最大值之前,进行判断:doubleArr.length 是否大于0
如果doubleArr.length > 0则进行寻找最大值
如果doubleArr.length <= 0呢?max方法中返回值类型为double,但是此时不能返回double类型数值,因为返回double类型数值会被误认为double数组中的最大值,所以要将返回值类型更改为Double,Double是一个包装类,null可以返回给Double的对象
类中的代码
class Max{
//定义一个方法max,形参为double数组,返回类型为double
public Double max(double[] doubleArr){
if(doubleArr.length > 0){ //先判断数组的长度是否大于0
//假定double数组的第一个元素为最大值
double max = doubleArr[0];
for(int i = 1; i < doubleArr.length; i++){
//遍历数组,将数组中的每个元素与max比较,若比max大则将其赋给max
if(doubleArr[i] > max){
max = doubleArr[i];
}
}
return max;
}else{
return null;
}
}
}
main方法中的代码
public class MaxTest{
public static void main(String[] args) {
//定义一个double类型的空数组
double[] doubleArr = {};
//创建Max类对象maxTest
Max maxTest = new Max();
//创建Double类对象result用于接收max方法的返回值
Double result = maxTest.max(doubleArr);
if(result != null){
System.out.println("double数组中的最大值为:" + result);
}else{
System.out.println("数组中没有数值,故没有最大值");
}
}
}
代码运行截图
2.如果数组定义情况为:double[] doubleArr = null;
会出现异常:Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "doubleArr" is null,不能读取数组的长度因为doubleArr = null
解决方法
在判断doubleArr.length前需要判断doubleArr是否为null即if(doubleArr != null)
在Max类中代码如下
class Max{
public Double max(double[] doubleArr){ //定义max方法,形参为double数组
//判断doubleArr是否为null并且数组长度是否大于0
if(doubleArr != null && doubleArr.length > 0){
double max = doubleArr[0]; //假设数组的第一位数是最大值
//遍历数组,将数组中的每个元素与max比较,若比max大则将其赋给max
for(int i = 1; i < doubleArr.length; i++){
if(doubleArr[i] > max){
max = doubleArr[i];
}
}
return max;
}else{
return null;
}
}
}