黑马程序员技术交流社区

标题: 技术贴 [打印本页]

作者: Crystal丶YS    时间: 2019-4-22 17:28
标题: 技术贴
//设计一个方法,用于比较两个数组的内容是否相同。public static boolean compare(int[] arr,int[] arr1){
    boolean A ;//= false;
    if(arr==arr1){
        A = true;
    }else if(arr!=null && arr1!=null){
        if(arr.length==arr1.length){
            A = false; //如果A的值未初始化,则在该部须返回A的值。if语句中嵌套for循环,for循环体使用到的变量须初始化。
           for(int x=0;x<arr.length;x++){
               if(arr[x]!=arr1[x]){
                   A = false;
               }else{
                   A = true;
               }
           }
        }else{
            A = false;
        }
    }else if(arr==null && arr1==null){
        A = true;
    }else{
        A = false;
    }
    return A;
}上面是我写的语句,用分类讨论思想,但是程序其实可以优化,而且我在if语句中嵌套for语句时,用到了未初始化的变量会报错。可以只考虑不相同的情况,返回false,否则返回true。提供的答案如下:public class Test07 {    public static void main(String[] args) {        //定义两个数组,分别使用静态初始化完成数组元素的初始化        int[] arr = {11, 22, 33, 44, 55};        //int[] arr2 = {11, 22, 33, 44, 55};        int[] arr2 = {11, 22, 33, 44, 5};        //调用方法,用变量接收        boolean flag = compare(arr,arr2);        //输出结果        System.out.println(flag);    }    //定义一个方法,用于比较两个数组的内容是否相同    public static boolean compare(int[] arr, int[] arr2) {        //首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false        if(arr.length != arr2.length) {            return false;        }        //其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false        for(int x=0; x<arr.length; x++) {            if(arr[x] != arr2[x]) {                return false;            }        }        //最后循环遍历结束后,返回true        return true;    }}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2