`
wuqiwei
  • 浏览: 21155 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员—数组练习之LuckNumber

阅读更多

------- 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循环在内循环中的次数也越来越多就出现了截图中的
 情况
*/
	}
}

 

 

 

 

  • 大小: 7.2 KB
  • 大小: 16.2 KB
  • 大小: 23.7 KB
  • 大小: 13.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics