黑马程序员技术交流社区
标题:
有个问题想请教各位大哥大姐。
[打印本页]
作者:
♫梦想起航♫
时间:
2013-10-28 14:06
标题:
有个问题想请教各位大哥大姐。
小弟刚接触学习毕向东老师的java基础不久,学习到数组那块,有一个想法,想通过代码完成一个小程序,需求如下:
给定两个char类型的数组,分别是:char ch1,ch2;ch1 = {'A','B','C'}; ch2 = {'A','B'};
请用代码找出这两个数组中不同的字符,并输出;
请各位大哥大姐动动您们的手,敲敲代码,随便告诉小弟写着段程序的思想,和每句代码的用处。小弟感激不尽!
作者:
郑齐育
时间:
2013-10-28 14:16
不知道你接触到字符串对象了没 你可以将两个字符数组转成字符串,再利用字符串的方法,就可以比较出两个字符串的不同。没学过的话 比较连个数组内容的不同就要遍历比较所有内容了。可以使用双重for循环来判断。
作者:
♫梦想起航♫
时间:
2013-10-28 14:51
郑齐育 发表于 2013-10-28 14:16
不知道你接触到字符串对象了没 你可以将两个字符数组转成字符串,再利用字符串的方法,就可以比较出两个字 ...
就是今天在qq群里里看到的,那位大哥用的是String[] a= {'A','B','C'};String[] b={'A','B'};好像是这样定义的吧,记不太清了,然后我看了他的代码后看见里面有许多不认识的关键字,不过大致内容也是用的是遍历数组,加判断,所以我就像能不能用我现在学习到的知识做到呢。只因刚接触java,才学习到毕向东老师的第四天,很多知识还没学习到。虽然需求有了,但是思想和代码的实现对于现在的我来说显得有点牵强,所以想在这里请教大哥大姐们,应该如何实现这一功能。
作者:
wenbaoxing
时间:
2013-10-28 20:32
我先做了个找相同元素的,你先看看:
/*
需求如下:
给定两个char类型的数组,分别是:char ch1,ch2;ch1 = {'A','B','C'}; ch2 = {'A','B'};
请用代码找出这两个数组中相同的字符,并输出;
思路:
1、建立一个存放相同元素的数组,取长度短的数组
2、将短数组进行遍历,在遍历过程中和长数组逐个进行比较,如果相同存入新数组
3、如果比较完毕新数组长度为零则表示没相同元素
*/
class ArrayDemo
{
public static void main(String[] args)
{
char[] chArr1= {'A','B','C','D','F'};
char[] chArr2= {'L','U','R'};
//打印一下原数组
System.out.println(chArr1);
System.out.println(chArr2);
//定义一个新数组,用来存放相同元素
int len=chArr2.length;
char[] chArr=new char[len];
//定义计数器,记录相同元素的个数
int count=0;
//遍历两个数组,进行比较,查找相同元素
for (int i=0;i<chArr2.length ;i++ )
{
for (int j=0;j<chArr1.length ;j++ )
{
if (chArr2[i]==chArr1[j])
{
//找到相同元素则存储,并让计数器加1
chArr[count]=chArr2[i];
count++;
}
}
}
//遍历完成,count为0则表示没有相同元素,否则,找到,打印结果
if (count!=0)
{
System.out.println("相同元素的个数为:"+count);
System.out.println("相同元素有:");
for (int i=0;i<count ;i++ )
{
System.out.println(chArr[i]);
}
}else
System.out.println("没有相同元素");
}
}
复制代码
作者:
wenbaoxing
时间:
2013-10-28 20:47
获取不同的元素,方法类似,新建一个数组,长度是原来两个数组的长度之和,逐个比较,不同,则存入新的集合
作者:
回天之力
时间:
2013-10-28 21:18
class Test2
{
public static void main(String[] args)
{
char[] ch1={'A','B','D'};
char[] ch2={'A','B','D','E'};
//用for循环嵌套来遍历两个数组中的每一个数
//然后在比较他们是否相等,相等的话 就输出ok了
for(int x=0;x<ch1.length;x++)
{
for(int y=0;y<ch2.length;y++)
{
if(ch1[x]==ch2[y])
System.out.println(ch1[x]);
}
}
}
}
复制代码
作者:
Clare0621
时间:
2013-10-29 12:11
下面是我实现的完整功能,里面有详细注释。新人一个,搞了老长时间,帮帮你顺便也提高下自己,代码质量可能不高{: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);
}
}
复制代码
作者:
Clare0621
时间:
2013-10-29 12:24
本帖最后由 Clare0621 于 2013-10-29 12:30 编辑
很简单的程序,写的时候老出错,还是得多练习 啊。。。。
作者:
To
时间:
2013-10-29 21:43
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2