下面是我实现的完整功能,里面有详细注释。新人一个,搞了老长时间,帮帮你顺便也提高下自己,代码质量可能不高{:soso_e113:},欢迎指正{:soso_e181:}。- /*
- 需求:找出两个数组中不同的字符并打印
- 思路:
- 1、利用for循环嵌套遍历两个数组,并定义一个新数组记录下相同元素
- 2、将两个原数组与分别于新数组比较即可得到两个数组中的独有元素,并存储在另外两个新数组中
- 3、将最后得到两个新数组打印即可
- */
- class CompareArr
- {
- //函数功能:找出两个数组中的不同元素,并打印
- public static void compareArr(char[] a,char[] b)
- {
- //先定义一个数组,用来存放相同元素
- int len = a.length<b.length?a.length:b.length;
- char[] same = new char[len];
- int idex = 0;
- //for嵌套遍历数组并存储相同元素
- for (int x=0;x<a.length ;x++ )
- {
- for (int y=0;y<b.length ;y++ )
- {
- if (a[x]==b[y])
- {
- same[idex] = a[x];
- idex++;
- }
- else
- continue;
- }
- }
- char[] a1 = partArr(a,same);//调用partArr方法取得a数组中的独有元素
- char[] b1 = partArr(b,same);
- printArr(a1);
- printArr(b1);
- }
- //函数功能:通过比较得到传入数组chr的独有元素,并存储在part数组中返回给调用者
- private static char[] partArr(char[] chr,char[] same)
- {
- char[] part = new char [chr.length];
- int p = 0;
- for (int m=0;m<chr.length ; m++)
- {
- for (int n=0;n<same.length ; n++)
- {
- if (chr[m]==same[n])
- break;
- else if (n==same.length-1)//控制使chr中元素与same中每个元素比较完,都不相同才存储
- {
- if (chr[m]==same[n])
- break;
- else
- {
- part[p] = chr[m];
- p++;
- }
- }
- else
- continue;
- }
- }
- return part;
- }
- //函数功能:打印数组
- private static void printArr(char[] arr)
- {
- System.out.print("[");
- for (int x=0;x<arr.length ;x++ )
- {
- if (x!=arr.length-1)//判断避免下面运算脚标越界
- {
- if (arr[x] != '\u0000' && arr[x+1] != '\u0000')//判断只打印part数组中的非空字符
- System.out.print(arr[x]+", ");
- else if (arr[x] != '\u0000' && arr[x+1] == '\u0000')
- System.out.println(arr[x]+"]");
- else
- break;
- }
- else
- System.out.println(arr[x]+"]");
- }
- }
- public static void main(String[] args)
- {
- char[] a = {'A','B','C','B','D','E','F','A'};
- char[] b = {'A','B','C','D','G','H','K','M','G','R'};
- printArr(a);
- printArr(b);
- System.out.println("a,b数组中的不同元素分别为:");
- compareArr(a,b);
- }
- }
复制代码 |