| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:比较2个数组中不相同的 输出
只看楼主 加入收藏
横山居石
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2009-6-22
结帖率:87.5%
收藏
已结贴  问题点数:0 回复次数:5 
比较2个数组中不相同的 输出
比较2个数组中不相同的 输出   循序可以不相同   我写的这个错在哪了?
    public ArrayList compare(String []a,String []b) {
        ArrayList<String> o =new ArrayList<String>();
        for(int i=0;i<a.length;i++) {
            for(int p=0;p<b.length;p++) {
                if(a[i].equals(b[p]))
                    break;
               
                else
                    o.add(a[i]);
            }
        }
        for(int i=0;i<a.length;i++) {
            for(int p=0;p<b.length;p++) {
                if(b[i].equals(a[p]))
                    break;
               
                else
                    o.add(b[i]);
            }
        }
        return o;
    }
搜索更多相关主题的帖子: 输出 
2009-11-15 07:19
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
//简单实现了下不同数组相同下标的比较,其它的你自己去扩展吧
程序代码:
package test;

import java.util.ArrayList;

public class Arrylist {

    public static void main(String[] args) {
        String[] a = { "ch", "ah", "bh", "yh" };
        String[] b = { "ch", "ah", "kh", "yh" };
        compare(a, b);
    }

    public static void compare(String[] a, String[] b) {
        String[] c = new String[a.length];
        for (int i = 0; i < a.length; i++) {
            if (a[i].equals(b[i])) {
                
            } else {
                c[i] = a[i];
            }
        }
        for (int i = 0; i < a.length; i++) {
            System.out.print(c[i] + "  ");
        }
    }
}

C#超级群 74862681,欢迎大家的到来!
2009-11-15 11:33
卡卡小罗
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:334
专家分:131
注 册:2008-12-11
收藏
得分:10 
回复 楼主 横山居石
你的代码(修改后):
程序代码:
public ArrayList<String> compare(String[] a, String[] b) {
        ArrayList<String> result = new ArrayList<String>();
        boolean hasSameValue = false;
        for (int i = 0; i < a.length; i++) {
            for (int p = 0; p < b.length; p++) {
                if (a[i].equals(b[p])) {
                    hasSameValue = true;
                    break;
                }
            }
            if (!hasSameValue) {
                result.add(a[i]);
            }
            hasSameValue = false;
        }

        for (int i = 0; i < b.length; i++) {
            for (int p = 0; p < a.length; p++) {
                if (b[i].equals(a[p])) {
                    hasSameValue = true;
                    break;
                }
            }
            if (!hasSameValue) {
                result.add(b[i]);
            }
            hasSameValue = false;
        }

        return result;
    }

简单的优化后:
程序代码:
public ArrayList<String> compare(String a[], String b[]) {
        ArrayList<String> arrayList = new ArrayList<String>();
        for (int i = 0; i < a.length; i++) {
            arrayList.add(a[i]);
        }
        boolean hasSameValue = false;
        for (int i = 0; i < b.length; i++) {
            for (int j = 0; j < arrayList.size(); j++) {
                if (b[i].equals(arrayList.get(j))) {
                    hasSameValue = true;
                    arrayList.remove(j);
                }
            }
            if (!hasSameValue) {
                arrayList.add(b[i]);
            }
            hasSameValue = false;
        }
        return arrayList;
    }


匣浅难羁宝剑锋 玉藏石中也玲珑
初试清啼长天破 云光凝碧远岚平
2009-11-15 12:43
横山居石
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2009-6-22
收藏
得分:0 
谢谢 我看懂了  我想知道为什么中间非要用一个 Boolean 的hasSameValue 过渡呢? 或者说我那个程序为什么错了
2009-11-16 03:54
横山居石
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2009-6-22
收藏
得分:0 
直接用IF+ELSE 怎么得不到3楼写出的结果呢?
2009-11-16 04:21
横山居石
Rank: 2
等 级:论坛游民
帖 子:36
专家分:13
注 册:2009-6-22
收藏
得分:0 
谢谢 我自己弄懂了  
2009-11-16 04:40
快速回复:比较2个数组中不相同的 输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036643 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved