• 02_Java基本语法_5


     

    2.2.11.4 for 循环

    当很明确地知道循环要执行的次数时,就可以使用for循环,其语句格式如下:

    for (初始化表达式; 判断表达式; 修正表达式)

    {

    语句1;

    语句n;

    }

    若是在循环主体中要处理的语句只有1个,可以将大括号去除。下面列出了for循环的流程。

    1、第一次进入for循环时,为循环控制变量赋起始值。

    2、根据判断条件的内容检查是否要继续执行循环,当判断条件值为真(true)时,继续执行循环主体内的语句;判断条件值为假(false)时,则会跳出循环,执行其他语句。

    3、执行完循环主体内的语句后,循环控制变量会根据增减量的要求,更改循环控制变量的值,再回到步骤2重新判断是否继续执行循环。

    根据上述描述,可以绘制出如图2-16所示的for循环流程图。

     

    图2-16  for 循环的基本流程

    范例TestJava2_29可以让大家熟悉for循环的使用,它是利用for循环来完成由1至100的数的累加运算。

    范例:TestJava2_29.java 

    // 以下程序说明了for循环的使用方法
    
    public class TestJava2_29
    {
        public static void main(String[] args)
        {
    
            int iSum = 0;
    
            for (int i = 1; i <= 100; i++)
            {
                iSum += i;
            }
    
            System.out.println("1+2+3+...+100=" + iSum);
    
        }
    }

    输出结果:

    1+2+3+...+100=5050

    2.2.11.5 while 循环

    while是循环语句,也是条件判断语句。当事先不知道循环该执行多少次的时,就要用到while循环。

    while循环的格式如下:

    while (判断条件) 

    语句1;

    语句2;

    语句n;

    当while循环主体有且只有一个语句时,可以将大括号除去。在while循环语句中,只有一个判断条件,它可以是任何表达式,当判断条件的值为真,循环就会执行一次,再重复测试判断条件、执行循环主体,直到判断条件的值为假,才会跳离while循环。

    下面列出了while循环执行的流程。

    1、第一次进入while循环前,就必须先为循环控制变量(或表达式)赋起始值。

    2、根据判断条件的内容决定是否要继续执行循环,如果条件判断值为真(True),继续执行循环主体;条件判断值为假(False),则跳出循环执行其他语句。

    3、执行完循环主体内的语句后,重新为循环控制变量(或表达式)赋值(增加或减少),由于while循环不会自动更改循环控制变量(或表达式)的内容,所以在while循环中为循环控制变量赋值的工作要由设计者自己来做,完成后再回到步骤2重新判断是否继续执行循环。

    根据上述的程序流程,可以绘制出如图2-17所示的while循环流程图:

     

    图2-17  while循环的基本流程

    范例:TestJava2_30.java 

    // 以下程序说明了while循环的使用方法
    
    public class TestJava2_30
    {
        public static void main(String[] args)
        {
    
            int i = 1, iSum = 0;
    
            while (i <= 100)
            {
    
                iSum += i;
    
                i++;
    
            }
    
            System.out.println("1+2+3+...+100=" + iSum);
        }
    }

    输出结果:

    1+2+3+...+100=5050

    程序说明:

    1、在第6行中,将循环控制变量i的值赋值为1。

    2、第7行进入while循环的判断条件为i<=100,第一次进入循环时,由于i的值为1,所以判断条件的值为真,即进入循环主体。

    3、第8~11行为循环主体,sum+i后再指定给sum存放,i的值加1,再回到循环起始处,继续判断i的值是否仍在所限定的范围内,直到i大于100即跳出循环,表示累加的操作已经完成,最后再将sum的值输出即可。

    当明确知道要循环的次数的时候,就使用for循环。

    当不确定循环次数,只知道循环结束条件时,可以使用while循环。

    2.2.11.6 do…while 循环

    do…while循环也是用于未知循环执行次数的时候,而while循环及do…while循环最大不同就是进入while循环前,while语句会先测试判断条件的真假,再决定是否执行循环主体,而do…while循环则是“先做再说”,每次都是先执行一次循环主体,然后再测试判断条件的真假,所以无论循环成立的条件是什么,使用do…while循环时,至少都会执行一次循环主体。

    do…while循环的格式如下:

    do

    {

    语句1;

    语句2;

    语句n;

    }while(判断条件);

    当循环主体只有一个语句时,可以将左、右大括号去除。第一次进入do...while循环语句时,不管判断条件(它可以是任何表达式)是否符合执行循环的条件,都会直接执行循环主体。循环主体执行完毕,才开始测试判断条件的值,如果判断条件的值为真,则再次执行循环主体,如此重复测试判断条件、执行循环主体,直到判断条件的值为假,才会跳离dowhile循环。下面列出了dowhile循环执行的流程:

    1.进入do...whle循环前,要先为循环控制变量(或表达式)赋起始值。

    2.直接执行循环主体,循环主体执行完毕,才开始根据判断条件的内容决定是否继续执行循环;条件判断值为真(true)时,继续执行循环主体;条件判断值为假(false)时,则跳出循环,执行其他语句。

    3.执行完循环主体内的语句后,重新为循环控制变量(或表达式)赋值(增加或减少),由于dowhile循环和while循环一样,不会自动更改循环控制变量(或表达式)的内容,所以在dowhile循环中赋值循环控制变量的工作要由自己来做,再回到步骤2重新判断是否继续执行循环。

    根据上述的描述,可以绘制出如图2-18所示的do..while循环流程图:

     

    图2-18  do…whle循环的基本流程

    范例:TestJava2_31.java 

    // 以下程序说明了do...while循环的使用
    
    public class TestJava2_31
    {
        public static void main(String[] args)
        {
    
            int i = 1, iSum = 0;
    
            do
            {
    
                iSum += i;
    
                i++;
    
            } while (i <= 100);
    
            System.out.println("1+2+3+...+100=" + iSum);
        }
    
    }

    输出结果:

    1+2+3+...+100=5050

    程序说明:

    首先声明程序中要使用的变量i(循环记数及累加操作数)及sum(累加的总和),并将sum设初值为0;由于要计算1+2+…+100,因此在第一次进入循环的时候,将i的值设为1,接着判断i是否小于等于100,如果i小于等于100,则计算sum+i的值后再指定给sum存放。i的值已经不满足循环条件时,i即会跳出循环,表示累加的操作已经完成,再输出sum的值,程序即结束运行。

    while语句是先判断后执行,也就是说如果条件不满足,则肯定不会执行。 

    do…while语句是先执行一次之后再判断,如果条件不满足则退出循环,此语句循环体至少执行一次。

    在日常生活中,如果能够多加注意,并不难找到do…while循环的影子!举例来说,在利用提款机提款前,会先进入输入密码的画面,让使用者输入三次密码,如果皆输入错误,即会将银行卡吞掉,其程序的流程就是利用do…while循环设计而成的。

    2.2.11.7 循环嵌套

    当循环语句中又出现循环语句时,就称为嵌套循环。如嵌套for循环、嵌套while循环等,当然也可以使用混合嵌套循环,也就是循环中又有其他不同种类的循环。

    以打印九九乘法表为例,练习嵌套循环的用法。

    范例:TestJava2_32.java 

     

    // 以下程序说明了for循环的嵌套使用方法
    
    public class TestJava2_32
    {
        public static void main(String[] args)
        {
            // 用两层for循环输出乘法表
    
            for (int i = 1; i <= 9; i++)
            {
    
                for (int j = 1; j <= i; j++)
                {
    
                    System.out.print(j + "*" + i + "=" + (i * j) + "	");
                }
                
                System.out.print("
    ");
            }
        }
    }

     

     

    输出结果:

    1*1=1

    1*2=22*2=4

    1*3=32*3=63*3=9

    1*4=42*4=83*4=124*4=16

    1*5=52*5=103*5=154*5=205*5=25

    1*6=62*6=123*6=184*6=245*6=306*6=36

    1*7=72*7=143*7=214*7=285*7=356*7=427*7=49

    1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64

    1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81

    程序说明:

    1、i为外层循环的循环控制变量,j为内层循环的循环控制变量。

    2、当i 为1时,符合外层for循环的判断条件(i<=9),进入另一个内层for循环主体,由于是第一次进入内层循环,所以j的初值为1,符合内层for循环的判断条件(j<=i),进入循环主体,输出i*j的值(1*1=1),j再加1等于2,不符合内层for循环的判断条件(j<=i),即内层的做完,回到外层循环,然后i++,此时,i 会加1成为2,符合外层for循环的判断条件,继续执行内层for循环主体,直到i的值大于9时即离开嵌套循环。

    3、整个程序到底执行了几次循环呢?可以看到,当i 为1时,内层循环会执行1次(j为1),当i为2时,内层循环也会执行2次(j为1~2),以此类推的结果,这个程序会执行45次循环,而显示器上也正好输出45个式子。

    请考虑利用一层循环实现99乘法表。

    2.2.11.8 循环的跳离

    在Java语言中,有一些跳离的语句,如break、continue等语句。

    2.2.11.8.1 break 语句

    break语句可以强迫程序跳离循环,当程序执行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环中的内层循环,则break 语句只会跳离当前层的循环。以下图的for循环为例,在循环主体中有break语句时,当程序执行到break,即会离开循环主体,而继续执行循环外层的语句。

     

    以下面的程序为例,利用for循环输出循环变量i的值,当i除以3所取的余数为0时,即使用break语句的跳离循环,并于程序结束前输出循环变量i的最终值。

    范例:TestJava2_33.java 

    // 下面的程序是介绍break的使用方法
    
    public class TestJava2_33
    {
        public static void main(String[] args)
        {
            int i = 0;
    
            for (i = 1; i <= 10; i++)
            {
    
                if (i % 3 == 0)
                {
                    break;    // 跳出整个循环体
                }
    
                System.out.println("i = " + i);
    
            }
    
            System.out.println("循环中断:i = " + i);
    
        }
    }

    输出结果:

    i = 1

    i = 2

    循环中断:i = 3

    程序说明:

    1、第7~12行为循环主体,i为循环的控制变量。

    2、当i%3为0时,符合if的条件判断,即执行第10行的break语句,跳离整个for循环。此例中,当i的值为3时,3%3的余数为0,符合if的条件判断,离开for循环,执行第13行:输出循环结束时循环控制变量i的值3。

    通常设计者都会设定一个条件,当条件成立时,不再继续执行循环主体。所以在循环中出现break语句时,if 语句通常也会同时出现。此外,可以回想一下前面提到过的switch语句中也有一个break。

    与C++不同的是,Java还提供了一种带标签的break语句,用于跳出多重嵌套循环语句。通常标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号。例如:

            loop:
    
            for (int i = 0; i < 10; i++)
            {
    
                for (int j = 0; j < 10; j++)
                {
    
                    System.out.println(j);
    
                    if (j == 5)
    
                    {
                        break loop;
                    }
    
                }
    
            }
    
            System.out.println("跳出for嵌套循环~");

    2.2.11.8.2 continue 语句

    continue语句可以强迫程序跳到循环的起始处,当程序运行到continue语句时,即会停止运行剩余的循环主体,而是回到循环的开始处继续运行(即跳过一次执行,继续进行循环的下次操作)。以下图的for 循环为例,在循环主体中有continue语句,当程序执行到continue,即会回到循环的起点,继续执行循环主体的部分语句。

     

    将程序TestJava2_33 中的break 语句改成continue 语句就形成了程序TestJava2_34.java。可以观察一下这两种跳离语句的不同。break语句是跳离当前层循环,而continue语句是回到循环的起点。程序如下所示:

    范例:TestJava2_34.java

    // 下面的程序是介绍continue的使用方法
    
    public class TestJava2_34
    {
        public static void main(String[] args)
        {
            int i;
    
            for (i = 1; i <= 10; i++)
            {
    
                if (i % 3 == 0)
                {
                    continue;    // 跳出一次循环
                }
    
                System.out.println("i = " + i);
            }
    
            System.out.println("循环中断:i = " + i);
        }
    }

    输出结果:

    i = 1

    i = 2

    i = 4

    i = 5

    i = 7

    i = 8

    i = 10

    循环中断:i = 11

    程序说明:

    1、第7~12行为循环主体,i为循环控制变量。

    2、当i%3为0时,符合if的条件判断,即执行第10行的continue语句,跳离目前的for循环(不再执行循环体内的其他的语句),而是回到循环开始处继续判断是否执行循环。此例中,当i 的值为3、6、9时,取余数为0,符合if 判断条件,离开当前层的for循环,再回到循环开始处继续判断是否执行循环。

    3、当i 的值为11时,不符合循环执行的条件,此时执行程序第13行:输出循环结束时循环控制变量i的值11。

    当判断条件成立时,break语句与continue语句会有不同的执行方式。break语句不管情况如何,先离开循环再说;而continue语句则不再执行此次循环的剩余语句,直接回到循环的起始处。

    ·本章摘要:

    1、Java语言的注释方式有三种:

    (1)、单行注释:“//”记号开始,至该行结束;

    (2)、多行注释:“/*”与“*/”这两个符号之间的文字;

    (3)、文档注释:“/**”与“*/”这两个符号之间的文字;

    2、如果将一个类声明成public,则它的文件名称必须取成这个类的名称才能顺利编译。

    3、main()在Java里是一个相当特殊的method,它一定要声明成public,且main() method没有返回值,所以在它之前要加上void关键字。

    4、System.out是指标准输出,其后所连接的println是由print与line所组成的,意思是将后面括号中的内容打印在标准输出设备——显示器上,然后换行。

    5、由于Java程序是由类所组成,所以在完整的Java程序里,至少要有一个类。

    6、Java的变量名称可以由英文字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,也不能是Java中的保留关键字。此外,Java的变量有大小写之分

    7、变量的设置有以下两种方法:在声明的时候设置(初始化)、声明后再设置。

    8、Java的数据类型可分为下列两种:基本数据类型和引用数据类型。

    9、Java提供long、int、short及byte四种整数类型的最大值、最小值的代码。最大值的代码是MAX_VALUE,最小值是MIN_VALUE。如果使用某个类型的最大值或最小值,只要在这些代码之前,加上它们所属的类的全名即可。

    10、Unicode,它为每个字符制订了一个唯一的数值,如此在任何的语言、平台、程序都可以安心地使用。

    11、布尔(boolean)类型的变量,只有true(真)和false(假)两个值。

    12、数据类型的转换可分为下列两种:“自动类型转换”与“强制类型转换”。

    13、表达式是由操作数与运算符所组成的。

    14、一元运算符只需要一个操作数。如“+3”、“~a”、“-a”与“!a”等均是由一元运算符与一个操作数所组成的。

    15、算术运算符的成员有:加法运算符、减法运算符、乘法运算符、除法运算符、余数运算符以及正负号。

    16、if语句可依据判断的结果来决定程序的流程。

    17、递增与递减运算符有着相当大的便利性,善用它们可提高程序的简洁程度。

    18、括号()是用来处理表达式的优先级的,也是Java的运算符。

    19、当表达式中有类型不匹配时,有下列的处理方法:

    (1)占用较少字节的数据类型会转换成占用较多字节的数据类型。

    (2)有short和int类型,则用int类型。

    (3)字符类型会转换成short类型。

    (4)int类型转换成float类型。

    (5)若一个操作数的类型为double,则其它的操作数也会转换成double类型。

    (6)布尔类型不能转换至其他的类型。

    20、程序的结构包含:

    (1)顺序结构

    (2)选择结构

    (3)循环结构

    21、需要重复执行某项功能时,循环就是最好的选择。可以根据程序的需求与习惯,选择使用Java所提供的for、while及do…while循环来完成。

    22、break语句可以让强制程序逃离循环。当程序运行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环中的内层循环,则break语句只会逃离当前层循环。

    23、continue语句可以强制程序跳到循环的起始处,当程序运行到continue语句时,即会停止运行剩余的循环主体,而到循环的开始处继续运行。

    24、选择结构包括了if、if-else及switch语句,语句中加上了选择的结构之后,就像是十字路口,根据不同的选择,程序的运行会有不同的方向与结果。

    25、在循环里也可以声明变量,但所声明的变量只是局部变量,只要跳出循环,这个变量便不能再使用。

    感谢阅读。如果感觉此章对您有帮助,却又不想白瞟

                                     

  • 相关阅读:
    浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现(一)
    可变与不可变类型(一)
    查看虚拟机版本
    无法应用原保存的显示器配置
    uname -a输出内容分析
    Python 模块
    Python 函数(三)
    Python 函数(二)
    Python 函数(一)
    5-26 单词长度
  • 原文地址:https://www.cnblogs.com/springl/p/8710269.html
Copyright © 2020-2023  润新知