黑马程序员技术交流社区

标题: 幸运数问题 [打印本页]

作者: 尹兆国    时间: 2014-6-13 02:01
标题: 幸运数问题
本帖最后由 尹兆国 于 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循环不懂,麻烦懂的同志给个详细的注释,最好每行都有注释。
   

作者: 496080891    时间: 2014-6-13 13:26
Eclipse中有调试模式,可以自己在第13行pos++下断点,看pos的数值;
它是跳跃式更改数值元素;

作者: pk49800    时间: 2014-6-13 14:24
  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
看这个结果很明显




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2