A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ♫梦想起航♫ 中级黑马   /  2013-10-28 14:06  /  1598 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小弟刚接触学习毕向东老师的java基础不久,学习到数组那块,有一个想法,想通过代码完成一个小程序,需求如下:
              给定两个char类型的数组,分别是:char ch1,ch2;ch1 = {'A','B','C'}; ch2 = {'A','B'};
                     请用代码找出这两个数组中不同的字符,并输出;
              请各位大哥大姐动动您们的手,敲敲代码,随便告诉小弟写着段程序的思想,和每句代码的用处。小弟感激不尽!

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

8 个回复

倒序浏览
不知道你接触到字符串对象了没  你可以将两个字符数组转成字符串,再利用字符串的方法,就可以比较出两个字符串的不同。没学过的话 比较连个数组内容的不同就要遍历比较所有内容了。可以使用双重for循环来判断。
回复 使用道具 举报
郑齐育 发表于 2013-10-28 14:16
不知道你接触到字符串对象了没  你可以将两个字符数组转成字符串,再利用字符串的方法,就可以比较出两个字 ...

就是今天在qq群里里看到的,那位大哥用的是String[] a= {'A','B','C'};String[] b={'A','B'};好像是这样定义的吧,记不太清了,然后我看了他的代码后看见里面有许多不认识的关键字,不过大致内容也是用的是遍历数组,加判断,所以我就像能不能用我现在学习到的知识做到呢。只因刚接触java,才学习到毕向东老师的第四天,很多知识还没学习到。虽然需求有了,但是思想和代码的实现对于现在的我来说显得有点牵强,所以想在这里请教大哥大姐们,应该如何实现这一功能。
回复 使用道具 举报
我先做了个找相同元素的,你先看看:
  1. /*
  2. 需求如下:
  3.         给定两个char类型的数组,分别是:char ch1,ch2;ch1 = {'A','B','C'}; ch2 = {'A','B'};
  4.         请用代码找出这两个数组中相同的字符,并输出;

  5. 思路:
  6. 1、建立一个存放相同元素的数组,取长度短的数组
  7. 2、将短数组进行遍历,在遍历过程中和长数组逐个进行比较,如果相同存入新数组
  8. 3、如果比较完毕新数组长度为零则表示没相同元素
  9. */


  10. class  ArrayDemo
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 char[] chArr1= {'A','B','C','D','F'};
  15.                 char[] chArr2= {'L','U','R'};

  16.                 //打印一下原数组
  17.                 System.out.println(chArr1);
  18.                 System.out.println(chArr2);

  19.                 //定义一个新数组,用来存放相同元素
  20.                 int len=chArr2.length;
  21.                 char[] chArr=new char[len];

  22.                 //定义计数器,记录相同元素的个数
  23.                 int count=0;

  24.                 //遍历两个数组,进行比较,查找相同元素
  25.                 for (int i=0;i<chArr2.length ;i++ )
  26.                 {
  27.                         for (int j=0;j<chArr1.length ;j++ )
  28.                         {
  29.                                 if (chArr2[i]==chArr1[j])
  30.                                 {
  31.                                         //找到相同元素则存储,并让计数器加1
  32.                                         chArr[count]=chArr2[i];
  33.                                         count++;
  34.                                 }
  35.                         }
  36.                 }

  37.                 //遍历完成,count为0则表示没有相同元素,否则,找到,打印结果
  38.                 if (count!=0)
  39.                 {
  40.                         System.out.println("相同元素的个数为:"+count);
  41.                         System.out.println("相同元素有:");
  42.                         for (int i=0;i<count ;i++ )
  43.                         {
  44.                                 System.out.println(chArr[i]);                       
  45.                         }               
  46.                 }else
  47.                         System.out.println("没有相同元素");

  48.         }
  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
获取不同的元素,方法类似,新建一个数组,长度是原来两个数组的长度之和,逐个比较,不同,则存入新的集合
回复 使用道具 举报
  1. class Test2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.        char[] ch1={'A','B','D'};
  6.            char[] ch2={'A','B','D','E'};
  7.            //用for循环嵌套来遍历两个数组中的每一个数
  8.            //然后在比较他们是否相等,相等的话 就输出ok了
  9.            for(int x=0;x<ch1.length;x++)
  10.            {
  11.                    for(int y=0;y<ch2.length;y++)
  12.                    {
  13.                       if(ch1[x]==ch2[y])
  14.                                   System.out.println(ch1[x]);
  15.                    }
  16.            }
  17.         }
  18. }
复制代码
回复 使用道具 举报
下面是我实现的完整功能,里面有详细注释。新人一个,搞了老长时间,帮帮你顺便也提高下自己,代码质量可能不高{:soso_e113:},欢迎指正{:soso_e181:}。
  1. /*
  2. 需求:找出两个数组中不同的字符并打印

  3. 思路:
  4. 1、利用for循环嵌套遍历两个数组,并定义一个新数组记录下相同元素
  5. 2、将两个原数组与分别于新数组比较即可得到两个数组中的独有元素,并存储在另外两个新数组中
  6. 3、将最后得到两个新数组打印即可
  7. */

  8. class CompareArr
  9. {
  10.         //函数功能:找出两个数组中的不同元素,并打印
  11.         public static void compareArr(char[] a,char[] b)
  12.         {
  13.                 //先定义一个数组,用来存放相同元素
  14.                 int len = a.length<b.length?a.length:b.length;
  15.                 char[] same = new char[len];
  16.                 int idex = 0;

  17.                 //for嵌套遍历数组并存储相同元素
  18.                 for (int x=0;x<a.length ;x++ )
  19.                 {
  20.                         for (int y=0;y<b.length ;y++ )
  21.                         {
  22.                                 if (a[x]==b[y])
  23.                                 {
  24.                                         same[idex] = a[x];
  25.                                         idex++;
  26.                                 }
  27.                                 else
  28.                                         continue;
  29.                         }
  30.                 }

  31.                 char[] a1 = partArr(a,same);//调用partArr方法取得a数组中的独有元素
  32.                 char[] b1 = partArr(b,same);
  33.                 printArr(a1);
  34.                 printArr(b1);
  35.         }

  36.         //函数功能:通过比较得到传入数组chr的独有元素,并存储在part数组中返回给调用者
  37.         private static char[] partArr(char[] chr,char[] same)
  38.         {
  39.                 char[] part = new char [chr.length];
  40.                 int p = 0;
  41.                 for (int m=0;m<chr.length ; m++)
  42.                 {
  43.                         for (int n=0;n<same.length ; n++)
  44.                         {
  45.                                 if (chr[m]==same[n])
  46.                                         break;
  47.                                 else if (n==same.length-1)//控制使chr中元素与same中每个元素比较完,都不相同才存储
  48.                                 {
  49.                                         if (chr[m]==same[n])
  50.                                                 break;
  51.                                         else
  52.                                         {
  53.                                                 part[p] = chr[m];
  54.                                                 p++;
  55.                                         }
  56.                                 }
  57.                                 else
  58.                                         continue;
  59.                         }
  60.                 }
  61.                 return part;
  62.         }

  63.         //函数功能:打印数组
  64.         private static void printArr(char[] arr)
  65.         {
  66.                 System.out.print("[");
  67.                 for (int x=0;x<arr.length ;x++ )
  68.                 {
  69.                         if (x!=arr.length-1)//判断避免下面运算脚标越界
  70.                         {
  71.                                 if (arr[x] !=  '\u0000' &&  arr[x+1] != '\u0000')//判断只打印part数组中的非空字符
  72.                                         System.out.print(arr[x]+", ");
  73.                                 else if (arr[x] != '\u0000' && arr[x+1] == '\u0000')
  74.                                         System.out.println(arr[x]+"]");
  75.                                 else
  76.                                         break;
  77.                         }
  78.                         else
  79.                                 System.out.println(arr[x]+"]");
  80.                 }
  81.         }


  82.         public static void main(String[] args)
  83.         {
  84.                 char[] a = {'A','B','C','B','D','E','F','A'};
  85.                 char[] b = {'A','B','C','D','G','H','K','M','G','R'};
  86.                 printArr(a);
  87.                 printArr(b);
  88.                 System.out.println("a,b数组中的不同元素分别为:");
  89.                 compareArr(a,b);
  90.         }
  91. }
复制代码
回复 使用道具 举报
本帖最后由 Clare0621 于 2013-10-29 12:30 编辑

很简单的程序,写的时候老出错,还是得多练习 啊。。。。
回复 使用道具 举报
To 金牌黑马 2013-10-29 21:43:50
9#
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马