郑州游戏学院—陈跃峰老师的博客

人生难得几回博,来,让我们博一把

陈跃峰ID:Mailbomb
749001次访问,排名46好友103人,关注者342
努力学习,努力工作
Mailbomb的文章
原创 284 篇
翻译 12 篇
转载 11 篇
评论 1311 篇
陈跃峰的公告
陈跃峰 个人简历
cqucyf@gmail.com

本BLOG中文章,未经允许严禁用于商业目的!

本人编写的J2ME基础入门书籍: 《新编J2ME就业培训教程》,购买
dearbook
华储网
当当网
Chinapub
最近评论
bijat:太高兴了,今天的第一个j2me编译好了,向陈老师致敬!
bijat:太感谢陈老师了,写的太详细了,我终于编译好了我的第一个java,致敬!
onemonth:楼主,求你不要写了吧。如果非要写,换个名字。明朝那些事是很好的文章,你就不要糟蹋了这样的名字。
lunarfan:杨辉的算法不错。
panzhiqian11:kankan xuexi.
文章分类
收藏
    相册
    J2ME技术
    J2ME开发网
    无线空间
    Java网站
    Eclipse官方网站
    Java世纪网
    Sun中国
    Sun官方网站
    常用网站
    Chinabyte
    Google搜索引擎
    华军软件园
    新浪新闻
    网上书店
    ITbook
    互动出版网
    当当书店
    第二书店
    我工作过的地方
    上海托普信息技术学院
    游戏学院南京校区
    游戏学院郑州校区
    电脑报
    友情链接
    acqy的专栏
    eiyaa的专栏
    上海求职客栈
    刀剑啸的专栏
    刘军的BLOG
    王新钢的BLOG
    贝壳鱼(k7sem)专栏
    骄傲的猫
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Java编程那些事儿46—数组使用示例2收藏

    新一篇: Java编程那些事儿47—数组使用示例3 | 旧一篇: Java编程那些事儿45—数组使用示例1

     
    Java编程那些事儿46—数组使用示例2
    郑州游戏学院 陈跃峰
    6.3.4 判断数组元素是否重复
             要求:判断一个数组中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。
             该题中如果需要判断数组中元素是否重复,则需要对数组中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。
             实现思路:假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。
             则实现的代码如下:
                       int[] n = {1,2,3,1,0};
                       boolean flag = true;   //假设不重复
                       for(int i = 0;i < n.length – 1;i++){  //循环开始元素
                                for(int j = i + 1;j < n.length;j++){ //循环后续所有元素
                                         //如果相等,则重复
                                         if(n[i] == n[j]){
                                                   flag = false; //设置标志变量为重复
                                                   break;      //结束循环
                                         }
                                }
                       }
                       //判断标志变量
                       if(flag){
                                System.out.println(“不重复”);
                       }else{
                                System.out.println(“重复”);
                       }
             在该代码中,flag变量存储是否重复,true代表不重复,false代表重复。外部循环中循环变量i代表第一个元素的下标,内部循环中循环变量j代表后续元素的下标,当i为零时和后续所有元素比较,然后当i为1时也和后续所有元素比较,依次类推,这样实现所有元素之间的两两比较。然后如果元素相同,则代表有重复,把flag变量的值置成flase,结束循环。最后根据flag变量的值就可以判断是否重复了。
    6.3.5 判断数组是否对称
             要求:判断数组元素是否对称。例如{1}、{1,2,0,2,1},{1,2,3,3,2,1}这样的都是对称数组。
             该题中用于判断数组中的元素关于中心对称,也就是说数组中的第一个元素和最后一个元素相同,数组中的第二个元素和倒数第二个元素相同,依次类推,如果比较到中间,所有的元素都相同,则数组对称。
             实现思路:把数组长度的一半作为循环的次数,假设变量i从0循环到数组的中心,则对应元素的下标就是数组长度-i-1,如果对应的元素有一组不相等则数组不对称,如果所有对应元素都相同,则对称。
             则实现的代码如下:
                      int[] n = {1,2,0,2,1};
                       boolean flag = true; //假设对称
                       for(int i = 0;i < n.length/2;i++){ //循环数组长度的一半次
                                //比较元素
                                if(n[i] != n[n.length – i – 1]){
                                         flag = false;   //不对称
                                         break;       //结束循环
                                }
                       }
                      if(flag){
                                System.out.println(“对称”);
                       }else{
                                System.out.println(“不对称”);
                       }
             在该代码中,flag作为标志变量,值为true代表对称,false代表不对称,因为是两两比较,只需要比较数组的长度一半次即可,如果对应的元素不相同则数组不对称,结束循环。最后判断标志变量的值,就可以获得数组是否对称了。
    6.3.6 数制转换
             要求:将十进制数字转换为二进制数字。
             在前面介绍过,十进制数字转换为二进制数字时一般使用除二取余法,该方法很规则,在程序中可以通过循环实现,在程序中只需要把得到的数字存储起来即可。
             实现思路:将除二取余得到的第一个数字存储在数组中第一个元素,第二次得到的余数存储在数组中第二个元素,依次类推,最后反向输出获得的数字即可。
             实现代码如下:
                       int n = 35;
                       int[] m = new int[32];
                       //拆分数字
                       int num = 0;
                       while(n != 0){
                                m[num] = n % 2; //存储余数
                                num++;           //拆分数字增加1
                                n /= 2;          //去掉余数
                       }
                       //输出拆分后的数字
                       for(int i = num - 1;i >= 0;i--){
                                System.out.print(m[i]);
                       }
                       System.out.println();
             在该代码中,因为int是32位的,所以最多需要长度是32的数组即可。在存储时把拆分出的第一个数字,也就是二进制的低位,存储在数组的第一个元素,num代表拆分出的数字的个数以及数组下标,一直拆分到n的值为零时结束。循环结束后,因为拆分出来的数字个数是num,所以只需要反向输出数组中0到num-1下标的元素即可。

    发表于 @ 2008年06月24日 22:01:44|评论(loading...)|收藏

    新一篇: Java编程那些事儿47—数组使用示例3 | 旧一篇: Java编程那些事儿45—数组使用示例1

    评论

    #FlyHigherJava 发表于2008-06-26 16:05:01  IP: 211.142.27.*
    追看!
    #GProgrammer 发表于2008-06-28 17:17:05  IP: 222.35.85.*
    学习,受益匪浅
    #kelly 发表于2008-07-02 11:36:35  IP: 210.13.104.*
    您老写的程序自己都测试过吗?
    #hiker_1 发表于2008-07-03 16:30:31  IP: 221.0.95.*
    很好啊!!就是第一个题有点瑕疵:如果只是要看看有没有相同的话,可以在第一个循环之前加一个标志,
    out:
    for(int i = 0;i < n.length - 1;i++){ //循环开始元素
    for(int j = i + 1;j < n.length;j++){ //循环后续所有元素
    //如果相等,则重复
    if(n[i] == n[j]){
    flag = false; //设置标志变量为重复
    //System.out.println(n[i]);
    break out; //结束循环

    }
    }
    }
    这样在某种情况下可以大大的节省运行时间
    #zuochao278870131 发表于2008-07-12 10:55:41  IP: 122.0.197.*
    有一天我相信自己也会很流利的编写出好程序
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 陈跃峰