黑马程序员技术交流社区

标题: 完全看不懂啊~毕老师视频源代码第4天里,有个LuckNumber [打印本页]

作者: sandra_bae    时间: 2015-5-3 22:12
标题: 完全看不懂啊~毕老师视频源代码第4天里,有个LuckNumber
  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. }
复制代码

那位学长帮忙注释下,万分感谢~~

作者: 下一页5    时间: 2015-5-3 22:36
这个不是源代码吧
作者: sandra_bae    时间: 2015-5-4 22:32
下一页5 发表于 2015-5-3 22:36
这个不是源代码吧

.java文件不是源文件啊,原来~~
作者: rightyuan521    时间: 2015-5-4 23:01
好吧,我也没看懂
作者: 大西洋    时间: 2015-5-4 23:07
是不是缩写??

LuckyNumber~ 幸运号~
作者: sandra_bae    时间: 2015-5-4 23:23
大西洋 发表于 2015-5-4 23:07
是不是缩写??

LuckyNumber~ 幸运号~

??
我的意思是看不懂代码,因为没有写需求、思路以及注释。
不知道是干什么的,以及怎么实现的~~
作者: DonaldLove    时间: 2015-5-5 00:04
使用debug就可以看出来,pos是一直增加的直到8又变成0.跳出for(int y=0; y<3;y++)循环后arr[pos] = 0,for(int x=0; x<arr.length; x++)赋值成0后的arr[pos]会影响 while(arr[pos]==0)是否执行,变成0的顺序依次为arr[2]\[5]\[0]\[4]\[1]\[7]\[3]。然后执行for(int x=0; x<arr.length; x++)检查不为0的数;打印出arr[6];
作者: 挥斥方遒    时间: 2015-5-5 12:33
  1. //这个程序就是循环了7次将7个数字都改成了0;剩下一个不是0的数字。(这是第一个for的用途)
  2. //而每次循环的时候它都是至少跳过3个角标将碰到的第一个非0数字改成0;(这是第二个for)
  3. //然后就将最后一个非0的数字打印了出来。(这是第三个for)
  4. class LuckNumber
  5. {
  6.         public static void main(String[] args)
  7.         {                //定义数组arr
  8.                 int[] arr = {1,2,3,4,5,6,7,8};
  9.                 //定义个角标,用于获取数组中的第pos角标位置的数字
  10.                 int pos = -1;
  11.                 //这个for循环是为了将数组中的某个数字改成0
  12.                 for(int x=0;x<arr.length-1; x++)
  13.                 {                //这个for是找一个不是0的数字,为了将它改成0。
  14.                                
  15.                         for(int y=0; y<3;y++)
  16.                         {                //
  17.                                 pos++;
  18.                                 //防止角标越界
  19.                                 if(pos==arr.length)
  20.                                         pos=0;
  21.                                 //当第角标pos位置的数字0的时候就跳过。就不管这个0数字什么事了
  22.                                 while(arr[pos]==0)
  23.                                 {               
  24.                                         pos++;
  25.                                       //防止角标越界
  26.                                         if(pos==arr.length)
  27.                                                 pos=0;
  28.                                 }
  29.                         }
  30.                         //找到非0数字了,把数字改成了0
  31.                         arr[pos] = 0;
  32.                         //System.out.println(arr[pos]);
  33.                 }
  34.                 //这个for循环是找到第一个非零数字并打印出来。打印完了就break了
  35.                 for(int x=0; x<arr.length; x++)
  36.                 {
  37.                         if(arr[x]!=0)
  38.                         {
  39.                                 System.out.println(arr[x]);
  40.                                 break;
  41.                         }
  42.                 }
  43.         }
  44. }
复制代码

作者: lixunwen    时间: 2015-5-5 14:02
建议你看 刘意老师讲的视频 浅显易懂!
作者: sandra_bae    时间: 2015-5-5 22:38
DonaldLove 发表于 2015-5-5 00:04
使用debug就可以看出来,pos是一直增加的直到8又变成0.跳出for(int y=0; y

嗯,让我好好想想。
作者: sandra_bae    时间: 2015-5-5 22:39
lixunwen 发表于 2015-5-5 14:02
建议你看 刘意老师讲的视频 浅显易懂!

ok,刘意老师的是比较详细,特别是画图。
作者: sandra_bae    时间: 2015-5-5 22:41
lixunwen 发表于 2015-5-5 14:02
建议你看 刘意老师讲的视频 浅显易懂!

ok,刘意老师的是比较详细,特别是画图。
作者: nine789    时间: 2015-5-5 22:48
牛牛牛,学到第六天了  还没学到老毕的第四天,老毕的视频 好像有点老了
作者: sandra_bae    时间: 2015-5-5 22:56
nine789 发表于 2015-5-5 22:48
牛牛牛,学到第六天了  还没学到老毕的第四天,老毕的视频 好像有点老了

是,听他在视频里说,好像是兔年~~
作者: lixunwen    时间: 2015-5-6 07:34
结合了几个在黑马学习的 和未来进黑马的 都推荐刘意老师的。




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