传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Trik

初级黑马

  • 17

    黑马币

  • 6

    帖子

  • 0

    精华

© Trik 初级黑马   /  2019-1-10 10:26  /  175 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Trik 于 2019-1-10 10:29 编辑

基础班的一道数组顺序题,本来很简单的一道题,但是理解成了不考虑顺序也要判断相等,然后当时还没学到排序,就想着不用排序搞出来,最后终于强行搞出来了。分享一下代码。可能还有bug,请大神指教!

在主方法里定义两个数组      再定义一个方法用于比较两个数组里是否相等      public static ? equals(int[] arr1,int[] arr2)
功能:比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的,不考虑顺序是否一样)


[AppleScript] 纯文本查看 复制代码
public class Quiz4 {
    public static void main(String[] args){
    int[] arry1={1,2,3,4,5};
    int[] arry2={1,2,4,5,3};
        System.out.println(equals(arry1,arry2));
    }

public static boolean equals(int[] arr1,int[] arr2){
       //arr1作为外循环和arr2内循环相比的结果返回值
        boolean result=false;
        //arr2作为外循环和arr1内循环相比的返回值
        boolean result1=false;
        //计数器,记录每个外循环数组元素对应内循环数组元素不同的次数
        int count=0;
       //判断两个数组长度是否一样,一样执行下列操作,不一样返回false
        if(arr1.length==arr2.length){
           //嵌套循环,使得arr1的每一个元素可以和arr2的每个元素相比较
            out:for(int i=0;i<arr1.length;i++) {
               for (int j = 0; j < arr2.length; j++) {
                   //两数组元素相等时,break出内循环,重置计数器
                   if(arr1[i]==arr2[j]){
                       result = true;
                       count=0;
                       break;
                   }
                   //当外循环数组元素和内循环数组元素全部不同(即计数器加到和数组长度相等时),返回false,直接跳出外循环
                   else if(arr1[i]!=arr2[j]){
                       //内循环每次arr1和arr2的元素不同时,计数器+1
                       count++;
                       while(count==arr2.length){
                           result = false;
                           break out;
                       }
                   }
               result=true;
               }
           }
           int count1=0;
           //原理和上述嵌套循环相同,外循环改为arr2,内循环改为arr1
           out1:for(int i=0;i<arr2.length;i++){
               for(int j=0;i<arr1.length;j++){
                   if(arr2[i]==arr1[j]){
                       result1 = true;
                       count1=0;
                       break;
                   } else if(arr2[i]!=arr1[j]){
                       count1++;
                       while(count1==arr2.length){
                           result1 = false;
                           break out1;
                       }
                   }
                   result1=true;
               }
           }
           }else{
            result=false;
        }
        //将两个嵌套循环(arr1和arr2相比和arr2和arr1相比)的返回结果之进行逻辑与操作,得到最终结果
        return result && result1;
        }
}



评分

参与人数 1黑马币 +1 收起 理由
吴嘉浩 + 1 很给力!

查看全部评分

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马