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

黑马程序员—程序流程控制 循环结构 嵌套及练习

 
阅读更多

------- android培训java培训、期待与您交流! ----------

 

class forfordemo//嵌套及练习

//语句嵌套形式 就是语句中还有语句
//循环中还有循环就是循环嵌套

{	
	public static void main(String[] args) 
	{

//引子:打印3行4列的矩形

		for (int x=0; x<3 ; x++)
		{
			for (int y=0; y<4 ;y++)
			{
				System.out.print("*");
 /*				不写ln 使结果不换行 注意只有这个内循环结束了 才能去执行外循环 
				也就是打印4个横着的星后 才会换行 重复打4个星 直到12个打印完毕
				因为x有3个值 所以会有3行星 每行4个

				即为:

				****
				****
				**** //可见打印的长方形是内循环控制的列数 外循环控制的行数
*/
	
			}
			System.out.println();//只有一个功能就是换行。
		} 
		
			System.out.println();

/* 练习1.
		
		*****	//01234
		****	//0123	
		***		//012
		**		//01
		*		//1

    思路:发现图形有很多行,每一个行有很多列。
		要使用嵌套循环。毕老师原理:形象说法-->大圈套小圈。先小圈再大圈
*/

	int z=5;//不要丢; !!!!
	for (int x=0; x<5 ;x++) //外循环控制行 有5行 所以是x<5
	{
		for (int y=0; y<z ; y++)
		{
			System.out.print("*");
		}						
			System.out.println();
			z--;	
	} 

/*上面的代码貌似已经完善了 但是 我们可以发现一个规律 就是也可以将y定义成一个
变量*/
	int h=0;
	for (int x=0; x<5 ;x++) //外循环控制行 有5行 所以是x<5
	{
		for (int y=h; y<5 ; y++)
		{
			System.out.print("*");
		}						
			System.out.println();
			h++;	
	}
	
/*  
	老师说最常用的方法:
	可以看出h与x的变化是相同的 所以直接将y=x即可
*/

	for (int x=0; x<5 ;x++) //外循环控制行 有5行 所以是x<5
	{
		for (int y=x; y<5 ; y++)
		{
			System.out.print("*");
		}						
			System.out.println();
			//x++;		
	}


System.out.println("--------------------尖朝下老师---------------------");


//或者用 x--也可以(毕老师讲到了,也是自己的思路)

    for (int x=5; x>0 ;x--) 
	{
		for (int y=0; y<x ; y++)
		{
			System.out.print("*");
		}						
			System.out.println();
			//x++;

//示意图:
			//*****		01234	 x=5
			//****		0123	 x=4
			//***		012		 x=3
			//**		01		 x=2
			//*			0		 x=1


	}
		
//同时用x--和y--也行  (自己后来用的最多的方法)

	for (int x=5; x>0 ;x--) 
	{
		for (int y=x; y>0 ; y--)
		{
			System.out.print("*");
		}						
			System.out.println();
			//x++;		
	}


System.out.println("---------------------尖朝下自己--------------------");


/* 练习2.
		(就是练习1多了一个反向的)
		
		要求 打印如下:
		*****	
		****		
		***		
		**		
		*
		*
		**
		***
		****
		*****
*/
//自己的方法:(先做尖朝上的)

	int k=4;//不要丢;!!!
		for (int x=5; x>0 ;x--) 
	{
		for (int y=x; y>k ; y--)
		{
			System.out.print("*");
		}						
			System.out.println();
			k=k-2;
			//x++;		
	}
/*示意图:
			输出    y>k

			*		5>4
			**		4 3 >2
			***		3 2 1>0
			****	2 1 0 -1>-2
			*****	1 0 -1 -2 -3 >-4
*/

//也可以换其他的值来做
	int o=7;//不要丢;!!!
		for (int x=8; x>3 ;x--) 
	{
		for (int y=x; y>o ; y--)
		{
			System.out.print("*");
		}						
			System.out.println();
			o=o-2;
			//x++;		
	}
/*示意图:	
			输出	y>o             //y=x

			*		8>7				
			**		7 6>5
			***		6 5 4>3
			****	5 4 3 2>1
			*****	4 3 2 1 0 >-1
*/
	int s=8;//不要丢;!!!
		for (int x=9; x>4 ;x--) 
	{
		for (int y=x; y>s ; y--)
		{
			System.out.print("*");
		}						
			System.out.println();
			s=s-2;
			//x++;
	}
/*示意图:	
			输出  y = x  y>s             

			*			 9>8				
			**			 8 7>6
			***			 7 6 5>4
			****		 6 5 4 3>2
			*****		 5 4 3 2 1>0			
*/

/*
	总结 :上述定义的量的变化其实就相当于 y>=x 所以这样简化就行(自己以后用的
	最多的时候)
*/

		for (int x=5; x>0 ;x--) 
	{
		for (int y=5; y>=x ; y--)
		{
			System.out.print("*");
		}						
			System.out.println();
	}


System.out.println("-------------------尖朝上自己---------------------");


//课件中的方法 
	for (int x=0; x<5 ;x++ )
		{
			for (int y=0 ; y<=x ; y++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}


	System.out.println("------------------尖朝上老师-----------------");



//自己的答案

	for (int x=5; x>0 ;x--)//不要丢int
	{
		for (int y=x; y>0 ;y--)//不要丢int
		{
			System.out.print("*");
		}
		System.out.println();
	}

	for (int x=5; x>0 ;x--)
	{
		for (int y=5; y>=x ;y--)
		{
			System.out.print("*");//去掉ln 否则会换行
		}
		System.out.println();
	}		

	System.out.println("------------------自己的练习2答案-----------------");


		System.out.println("Hello World!");
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics