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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹兆国 中级黑马   /  2014-6-13 02:01  /  1153 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 尹兆国 于 2014-6-15 14:57 编辑
  1. class LuckNumber
  2. {
  3.       public static void main(String[] args)
  4.      {
  5.           int[] arr = {1,2,3,4,5,6,7,8};

  6.           int pos = -1;

  7.           for(int x=0;x<arr.length-1; x++)
  8.           {
  9.                       for(int y=0; y<3;y++)
  10.                       {
  11.                                pos++;

  12.                                if(pos==arr.length)
  13.                                        pos=0;
  14.                                while(arr[pos]==0)
  15.                               {
  16.                                        pos++;
  17.                                       if(pos==arr.length)
  18.                                      pos=0;
  19.                                }
  20.                          }
  21.                         arr[pos] = 0;
  22.                         //System.out.println(arr[pos]);
  23.            }

  24.           for(int x=0; x<arr.length; x++)
  25.           {
  26.                         if(arr[x]!=0)
  27.                        {
  28.                                     System.out.println(arr[x]);
  29.                                     break;
  30.                         }
  31.            }
  32.     }
  33. }
复制代码
   这段代码意思好像是将数组中的元素值改为0,但有一个没被修改,而这个便是那个幸运数。
  问题是第一个大的for循环不懂,麻烦懂的同志给个详细的注释,最好每行都有注释。
   

3 个回复

倒序浏览
Eclipse中有调试模式,可以自己在第13行pos++下断点,看pos的数值;
它是跳跃式更改数值元素;
回复 使用道具 举报
  1. class LuckNumber
  2. {
  3.       public static void main(String[] args)
  4.      {
  5.           int[] arr = {1,2,3,4,5,6,7,8};

  6.           int pos = -1;

  7.           for(int x=0;x<arr.length-1; x++)
  8.           {                       
  9.                       for(int y=0; y<3;y++)
  10.                       {                       
  11.                               
  12.                               
  13.                                pos++;
  14.                               
  15.                                if(pos==arr.length)
  16.                                        pos=0;
  17.                                while(arr[pos]==0)
  18.                               {
  19.                                        pos++;
  20.                                       if(pos==arr.length)
  21.                                      pos=0;
  22.                                }
  23.                                System.out.println("pos:"+pos+" "+arr[pos]);
  24.                          }
  25.                       System.out.println("将下标为"+pos+"置为0");
  26.                         arr[pos] = 0;
  27.                      
  28.            }

  29.           for(int x=0; x<arr.length; x++)
  30.           {
  31.                         if(arr[x]!=0)
  32.                        {
  33.                                     System.out.println(arr[x]);
  34.                                     break;
  35.                         }
  36.            }
  37.     }
  38. }
复制代码

输出结果:
pos:0 1
pos:1 2
pos:2 3
将下标为2置为0
pos:3 4
pos:4 5
pos:5 6
将下标为5置为0
pos:6 7
pos:7 8
pos:0 1
将下标为0置为0
pos:1 2
pos:3 4
pos:4 5
将下标为4置为0
pos:6 7
pos:7 8
pos:1 2
将下标为1置为0
pos:3 4
pos:6 7
pos:7 8
将下标为7置为0
pos:3 4
pos:6 7
pos:3 4
将下标为3置为0
7
看这个结果很明显

点评

下标是随机的 所以下标对应的数也是随机的 1-8中的任何一个都有可能成为幸运数  发表于 2014-6-15 14:54
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马