------- android培训、java培训、期待与您交流! ----------
class LuckNumber//幸运数字游戏 及循环总结
{
/*
比如你 把这个问题想成8个小朋友手拉手成一个圈arr[0]到arr[7],从第一个
小朋友开始,每数到3有一个小朋友出队arr=0,外面的for循环7次,给7个小
朋友赋值为0,表示出队,最后剩下的那个就是LuckNumber了。仔细读下代码
,应该不难的。
*/
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8};
int pos = -1;//pos = -1 才能让y为0时 pos正好也等于0 角标从0开始的
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<3;y++)
{
System.out.println( );
pos++;
System.out.println("pos ="+pos);
if(pos==arr.length)
pos=0;
System.out.println("pos1="+pos);
while(arr[pos]==0)//x=6时 会有arr[2,5,0,4,1,7,3]=0 所以最后一次循环最多 见图示
{
pos++;
System.out.println("pos2="+pos);
if(pos==arr.length)
pos=0;
System.out.println("pos3="+pos);
System.out.println( );
}
}
System.out.print("arr["+pos+"]即将变为0");
arr[pos] = 0;/*第一轮y=3时 内循环不符合条件 执行这个然后 x++
每进行一次循环就会有一个arr[pos] = 0;当最后x++到7时循环结束
也就是最后剩下一个小朋友 他就是幸运数字(最开始的排序)也就是要
打印的结果 接着执行下面的循环得出幸运的数字 当然也可以改变跳出的
数字 其他的数字也可*/
System.out.println( );
System.out.println("----------------x结束一次----------------" );
}
System.out.println( );
for(int x=0; x<arr.length; x++)
{
if(arr[x]!=0)
{
System.out.println("LuckNumber是第"+arr[x]+"个小朋友");
break;
}
}
/*
感觉自己循环一直掌握的不好 在这里总结一下 :
1.循环里的if条件只有在满足时 才会执行if的执行语句 本题里即if(pos==arr.length)
pos=0; 而不满足条件的话是不会参与循环的旁观者的态度 比如截图循环1,2
2.while循环同理 只有在满足条件的前提下才会执行循环体pos++;
System.out.println("pos2="+pos);
if(pos==arr.length)
pos=0;
System.out.println("pos3="+pos);
System.out.println( );
随着越来越多的元素被赋值为0 while循环在内循环中的次数也越来越多就出现了截图中的
情况
*/
}
}