------- 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!");
}
}