Java 程序流程控制 (下)
此篇单独对循环结构的知识点进行整理:
之前讲到循环结构分为:for循环,while循环,do...while循环三种最基本的循环结构;在JDK1.5以后的版本还提供了foreach循环,用于进行数组和集合的遍历。
循环语句的四个组成部分:
- 初始化部分
- 循环条件部分
- 循环体部分
- 迭代部分
for循环:
for(初始化条件; 循环条件; 迭代部分){
循环体
}
public class TestFor {
public static void main(String[] args) {
//基础for循环,讲一个语句打印多次
for(int i=0; i<7; i++){
System.out.println("Hello World!! 第"+i+"次打印");
}
}
}
练习:打印1-100中的所有偶数
public class TestFor {
public void PrintNum(){
for(int i=1; i<=100; i++){
if(i%2==0){//对2取余,若为0则证明是偶数,执行打印语句,反之则继续循环直到满足偶数条件或者i>0
System.out.println("i="+i);
}
}
}
public static void main(String[] args) {
TestFor testFor = new TestFor();
testFor.PrintNum();
}
}
练习:编写代码满足从1循环到150并在每一行打印一个值,另外需要在每个3的倍数的行打印“foo”,在每个5的倍数的行打印“biz”,
在每个7的倍数行上打印输出“baz”
public class TestFor {
public void FooBizBaz(){
for(int i=1; i<=150; i++){
System.out.print(i+":");
if(i%3 == 0){
System.out.print(" foo");
}
if(i%5 == 0){
System.out.print(" biz");
}
if(i%7 == 0){
System.out.print(" baz");
}
System.out.println();
}
}
public static void main(String[] args) {
TestFor testFor = new TestFor();
testFor.FooBizBaz();
}
}
注:一定要注意,这个题里不能使用else if(){},一旦使用,会无法在同时满足3、5、7的倍数的行数中同时打印三个字段,因为一旦有一个满足判断条件就不会执行下方的if判断语句从而直接跳出当前循环执行下一次循环。
还有很多小的基础的for循环算法,如打印1-100所有奇数的和、打印出所有的水仙花数(水仙花数可以自己搜索一下),这些题可以自行练习,有助于加强对for循环的理解,这里就不一一赘述了。
while 循环:
初始化条件
while(循环条件){
循环体
迭代条件
}
示例:输出1-100以内的所有偶数
public class TestWhile {
public void evenNum(){
int i = 1; //初始化条件
while(i<=100 ){//循环条件 if(i % 2 == 0){
System.out.println("i="+i);
}//循环体 i++;//迭代条件
}
} public static void main(String[] args) {
TestWhile testWhile = new TestWhile();
testWhile.evenNum();
}
}
注:for循环和while循环是能够实现互相转化的,因为二者拥有同样的四部分,只是四部分放置的位置不同。
while循环的另一种循环方式:
do...while 循环:
初始化条件
do{
循环体
迭代条件
}while(循环条件);
由上述结构可以看出,do...while循环是先进行一次循环在来判断是否满足循环条件,满足则进行下一次循环,不满足则停止循环。
示例:打印1-100中的所有偶数
public class TestDoWhile {
public void evenNum(){
int i = 1;
do{
if(i % 2 == 0){
System.out.println("i="+i);
}
i++;
}while(i <= 100);
}
public static void main(String[] args) {
TestDoWhile testDoWhile = new TestDoWhile();
testDoWhile.evenNum();
}
}
do...while和while循环的区别:
do...while循环中 初始化条件即使不满足循环条件也会直接执行一次循环体再进行循环条件判断,所以循环体至少被执行一次,而while循环是必须满足循环条件才会执行循环体。
嵌套循环
顾名思义,嵌套循环就是再一个循环中还能再声明一个循环
几种嵌套方式:
1.for循环中能够嵌套一个for或多个for;
2.while循环中可以嵌套一个或多个while循环;
3.for循环中可以嵌套一个或多个while循环;
4.while循环中可以嵌套一个或多个for循环;
5.for循环中可以嵌套一个或多个for/while循环;
6.while循环中可以嵌套一个或多个for/while循环。
示例:
For之间嵌套
public class TestForFor {
/*打印出 *****
* *****
* *****
* *****
* */
public void forQianTao(){
for(int i = 1; i <= 4;i++){
for(int j = 1; j<=5 ;j++){
System.out.print("*");
}
System.out.println();
}//此为两层循环,i用于控制打印的行数,j用于控制打印的列数
}
public static void main(String[] args) {
TestForFor testForFor = new TestForFor();
testForFor.forQianTao();
} }
其它几种嵌套循环可以参考上面的示例,结构类似。自己可以进行练习,如通过嵌套循环打印九九乘法表、或者打印一个由星号组成的菱形图案,每个星号之间要有一个空格,这些题可以加强对嵌套循环的理解。