循环语句

循环语句主要分为for循环和while循环两种。for循环一般用在预先已经知道循环次数的情形(如要计算1+2+…+100的结果),而如果不能确定循环次数就需要使用while循环(如复制一个文件,但不知道文件的具体大小)。

简易for循环

for(参数初始化表达式; 条件表达式; 更新循环变量表达式)
{
    //do something
}
  1. for循环的括号中,用两个分号分隔出三个表达式
  2. 这三个表达式都是可选的,即是可以省略的。
  3. 第一个和第三个表达式可以是逗号表达式。
for (int i = 0, j = 0; i < 2; ++i, j = j + 2)
{
    //do something
}

continue 和 break

continue的作用是结束本次循环。即跳出循环体中下面尚未执行的语句。
– 对于while循环,继续判断循环条件是否成立。
– 对于for循环,执行for语句头中第三个表达式,然后判断循环条件是否成立。

break语句的则是结束整个循环过程,不再判断执行循环的条件是否成立。

值得注意的是,这两个关键字的作用对象是本层循环,在多层循环中, break语句只向外跳一层,continue语句也只是提前结束本层本次循环。

多层嵌套循环中的break

package cn.xiaobaidonghui.test;
/**
 * 这是关于循环里的break用法
 * 通常情况下break用于跳出当前层循环。当遇到嵌套循环时,怎么样能跳出外层循环呢。
 * 
 * @author baidonghui
 */
public class testBreak
{
    public static void main(String[] args)
    {
        System.out.println(\"for1\");
        for1();
        System.out.println(\"for2\");
        for2();
        System.out.println(\"for3\");
        for3();
    }
    
    /**
     * 这是一个三层循环,每层循环变量为整数[0,3),在最内侧循环中当k取值为1时,跳出最内层循环。
     */
    public static void for1()
    {
        for(int i = 0; i < 3; i++)
        {
            for(int j = 0; j< 3;j++)
            {
                for(int k = 0; k <3; k ++)
                {
                    System.out.println(i +\" \" + j + \" \" + k);
                    if(k==1)
                    {
                        break;
                    }
                }
            }
        } 
    }
    
    /**
     * 本函数与 {@link #for1()}的区别是:为中间层循环加了标号,当最内层k=1时执行break LABEL_FOR,跳出中间层循环。
     */
    public static void for2()
    {
        for(int i = 0; i < 3; i++)
        {
            LABEL_FOR:
            for(int j = 0; j< 3;j++)
            {
                for(int k = 0; k <3; k ++)
                {
                    System.out.println(i +\" \" + j + \" \" + k);
                    if(k==1)
                    {
                        break LABEL_FOR; 
                    }
                }
            }
        } 
    }
    
    /**
     * 本函数与 {@link #for1()}的区别是:为最外层循环加了标号,当最内层k=1时执行break LABEL_FOR,跳出最外层循环,函数退出。
     */
    public static void for3()
    {
        LABEL_FOR:
        for(int i = 0; i < 3; i++)
        {
            for(int j = 0; j< 3;j++)
            {
                for(int k = 0; k <3; k ++)
                {
                    System.out.println(i +\" \" + j + \" \" + k);
                    if(k==1)
                    {
                        break LABEL_FOR; 
                    }
                }
            }
        } 
    }
}

输出结果:

for1
0 0 0
0 0 1
0 1 0
0 1 1
0 2 0
0 2 1
1 0 0
1 0 1
1 1 0
1 1 1
1 2 0
1 2 1
2 0 0
2 0 1
2 1 0
2 1 1
2 2 0
2 2 1
for2
0 0 0
0 0 1
1 0 0
1 0 1
2 0 0
2 0 1
for3
0 0 0
0 0 1

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注