您的位置:首页 > 编程语言 > Java开发

JAVA基础之其他流程控制语句:循环嵌套

2016-05-22 13:17 459 查看
/*用循环嵌套打印出下面这副图形。

*****

*****

*****

*****

根据以上图形我们知道,这个图形是5行,每行是5个*号。

我们可以将每一行看成一个循环,把每行的每颗*看成一个循环。

这自然就涉及到了循环嵌套。*/

for (int a=0;a<=4 ;a++ ) //外部循环就代表的每一行。循环五次就是五行。

{

for (int b=0;b<=4 ;b++ )//内部循环就代表每一行的*,循环五次就是五颗*

{

System.out.print("*");//print不加ln是因为加了就会导致每输出一*就是一行。

}

System.out.println();//但是不加的话就会导致所有符号连成一行,这也不是我们需要的。

//所以我们在每一行循环完毕的时候输出一个换行命令,这条语句就是纯粹的换行符。

}

System.out.println("------------");

/*练习题2

打印出一下图形

*****

****

***

**

* */

int e=5;//定义第三方变量是为了控制每一行的*依次递减。第一行是5个,所以我们初始值设为5.

for (int c=1;c<=5 ;c++ )//外循环依旧控制行数。

{

for (int d=1;d<=e ;d++ )//我们用e来限定区间,决定每行打印的*数。

{

System.out.print("*");

}

System.out.println();

e--;//递减是因为外循环循环一次,*就少打印一次。

}

//或者我们也可以这样写。

int f=1;

for (int g=1;g<=5 ;g++ )

{

for (int h=f;h<=5 ;h++ )//将外部变量赋值给内循环定义的变量,也能做到限定范围。

{

System.out.print("*");

}

System.out.println();

f++;//f我们赋值给了内循环变量,变量的最大值不变的情况下我们就只有自增来达到限定范围的目的。

}

//以上代码我们发现f与g的值变化是相同的所以我们可以将f替换为g.

//新的代码就可以这样写。

for (int g=1;g<=5 ;g++ )

{

for (int h=g;h<=5 ;h++ )

{

System.out.print("*");

}

System.out.println();

}

System.out.println("-------------");

/*练习题3

打印出以下图形。

*

**

***

****

*****

*/

int x=5;

for (int b=1;b<=5 ;b++ )

{

for (int c=x;c<=5 ;c++ )

{

System.out.print("*");

}

System.out.println();

x--;

}

//也可以写作:

int a=1;

for (int b=1;b<=5 ;b++ )

{

for (int c=1;c<=a;c++ )

{

System.out.print("*");

}

System.out.println();

a++;

}

//以上我们发现,a值与b值的变化是一样的,我们同样可以简化写为。

for (int b=1;b<=5 ;b++ )

{

for (int c=1;c<=b ;c++ )

{

System.out.print("*");

}

System.out.println();

}

System.out.println("------------");

/*练习题4

打印出以下图形

54321

5432

543

54

5

*/

int yuer=1;

for (int c=1;c<=5 ;c++ )

{

for (int b=5;b>=yuer ;b-- )

{

System.out.print(b);

}

System.out.println();

yuer++;

}

//同样,yuer的值和c的值变化是一样的。我们一样可以写为。

for (int c=1;c<=5 ;c++ )

{

for (int b=5;b>=c ;b-- )

{

System.out.print(b);

}

System.out.println();

}

System.out.println("------------");

/*练习题5

打印出以下图形

1

22

333

4444

55555 */

for (int b=1;b<=5 ;b++ )

{

for (int c=1;c<=b ;c++ )

{

System.out.print(b);

}//每行出现的数字正好对应行数,所以我们打印行数即可。

System.out.println();

}

System.out.println("------------");

/*练习题6

打印出以下图形。

* * * * *

* * * *

* * *

* *

* */

for (int b=1;b<=5 ;b++ )

{

for (int d=2;d<=b ;d++ )

{

System.out.print(" ");

}

for (int c=b;c<=5 ;c++ )

{

System.out.print("* ");

}

System.out.println();

}

System.out.println("------------");

/*练习题7

打印出99乘法表 */

for (int b=1;b<=9 ;b++ )//99乘法表有9行。

{

for (int c=1;c<=b ;c++ )//内循环体是标准的正三角图形标准。

{

System.out.print(c+"*"+b+"="+c*b+"\t");

}

System.out.println();

}

/*转义字符:

\n 回车

\t 制表符

\b 退格

\r 按下回车键

其他流程控制语句

关键词:break(跳出);

应用范围:选择结构和循环结构。也就是switch语句和循环语句。

switch语句已经知道break怎么使用,这里单独说说循环语句。

比如: */

for (int b=1;b<3 ;b++ )

{

System.out.println("hello world!");

break;//循环体执行到这里的时候就会直接跳出整个循环结构,结束整个循环。

}

/*注意:不能将break放在执行语句的上面,执行语句执行不到编译会报错。

还有一种情况也要注意。*/

for (int b=0;b<2 ;b++ )

{

if (b==1)

{

break;

}

System.out.println("hello frend.");

}

/*虽然break作为if语句的执行语句出现,但是它跳出的却不是if语句,

而是整个for循环结构。因为break只能跳出switch语句和循环语句。

所以这里的执行顺序是for条件满足后,进入循环体,第一次b赋值为0,不执行if语句,break就执行不到

输出"hello frend.",然后b自增,满足条件继续循环,if判断为true,执行break跳出。

到这里整个循环结构结束。

还有一种情况。*/

for (int b=0;b<3 ;b++ )

{

for (int c=0;c<3 ;c++ )

{

System.out.println("c="+c);

break;

}

}

System.out.println("------------");

/*当有循环嵌套的时候,break只会跳出当前所在的循环,而不是整个循环。

如果想要跳出指定的循环,就得给循环命名,break后跟上循环名即可。

比如:*/

yinyin:for (int b=0;b<3 ;b++ )

{

linghan:for (int c=0;c<3 ;c++ )

{

System.out.println("c="+c);

break yinyin;

}

}

/*上面指定了跳出的循环体,所以就只会执行一次c=0整个循环就结束了。

不过给循环命名这种方法用得不多,作为了解即可。

其他流程控制语句

关键词2 continue(继续)

作用范围:循环结构。

如果出现在其他地方,编译会失败。

例如:*/

for (int b=0;b<4 ;b++ )

{

if (b%2==0)

{

continue;

}

System.out.println("hello world.");

}

System.out.println("------------");

/*上面如果我们将continue写在输出语句的下面是没有意义的,因为循环本来就会继续执行

所以我们将它放到if语句里面才能准确的体现他的特点。

上面循环的运行顺序是:Boolean表达式条件满足,执行if语句,0模运2是等于0的,所以执行

continue,输出语句不再执行,直接返回到b变量自增,然后再判断boolean表达式结果

条件满足,进入if语句,1模运2不等于0,if判断结果为false,不执行里面的continue,

继续向下执行输出语句。

所以,最终会输出两次“hello world。”

因为0,2,才会满足if语句里面的条件。

由此我们看出continue的特点:

结束本次循环,继续下次循环。

所以continue单独存在时,除非特殊情况,否则不要有任何语句,因为执行不到。

同样,continue也可应用于循环嵌套;*/

yinyin:for (int b=0;b<3 ;b++ )

{

linghan:for (int c=0;c<3 ;c++ )

{

System.out.println("c="+c);

continue yinyin;

}

}

/*这里如果循环不命名的话,continue所在的位置存在意义不大。

循环体本应该输出执行语句9次。

因为命名了循环体,continue执行的是外循环,所以只执行3次执行语句输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: