首页 > 其他 > 详细

决策分支

时间:2021-02-21 00:15:31      阅读:29      评论:0      收藏:0      [点我收藏+]

1.switch语句

  语法:switch(用于判断的参数){case 常量表达式1:语句1;[break;]case 常量表达式2:语句2;[break;]...case 常量表达式n:语句n;[break;][default]:语句n+1;[break;]} 例如:

int grade=10;
switch(grade) {
case 10:
case 9:System.out.println("评价:优");break;
case 8:System.out.println("评价:良");break;
case 7:
case 6:System.out.println("评价:优");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:System.out.println("评价:差");break;
default:System.out.println("评价无效");

  switch关键字后括号内用于判断的参数可以是整数、枚举、字符串,case关键字右面是常量表达式,一个switch语句中可以存在多个case关键字,当常量表达式的值与参数相等时,执行该case关键字之后的语句。case关键字最右边时break语句,break语句可以跳出switch语句,如果执行完相应的语句之后还需要继续执行后面的语句,则可以不写这个break语句。如果参数没有匹配任何的case,则会执行default语句,当没有default语句时,跳出switch语句。

2.while语句

  语法:while(布尔表达式){语句} 布尔表达式的返回值为布尔值,判断语句是否继续执行,大括号内的语句为循环体,表示可以被循环执行的语句。当返回的布尔值是真时,继续执行循环体,直到返回的布尔值为假,结束循环。以为一百以内的数求和为例,如下:

int sum=0;
int i=1;
while(i<=100) {
    sum=sum+i;
    i++;
}
System.out.println(sum);

  这段代码中,执行到while语句时,先判断i的值是否小于等于100,此时i=1,i<=100为真,执行大括号中的循环体,为sum值加上i的值“1”,紧接着i做自加运算,得到2,继续进行判断,决定是否执行循环体。当i=100时,此时判断i<=100为真,继续执行循环体,为sum的加上100,i自加后变为101,紧接着进行判断,此时i的值大于100,返回的布尔值为假,结束循环。

  while语句中的布尔表达式不能为空,不应该是常量,否则会出现无限循环和永不循环的情况。在循环体中,还要有能够改变条件表达式值得语句否则也会成为死循环。

3.do...while语句

  语法:do{语句}while(布尔表达式);do...while是先执行语句,后进行判断,在执行语句前不考虑控制循环,while语句则是先判断,后执行语句,执行语句前首先要控制循环,例如:

        int i=0;
        int j=0;
        System.out.println("执行循环前j="+j);
        while(i>1) {
            j++;
        }
        System.out.println("执行循环后j="+j);
        int i=0;
        int j=0;
        System.out.println("执行循环前j="+j);
        do {
            j++;
        }while(i>1);
        System.out.println("执行循环后j="+j);

  在上述两段代码中,使用while语句后,输出的结果为:“执行循环前j=0 执行循环后j=0”,而使用do...while语句得到的结果为“执行循环前j=0 执行循环后j=1”。显然,while语句在判断条件为假的情况下结束了循环,而do...while语句是在执行了一次语句之后进行条件判断。以判断两次输入的密码是否一致为例:

        Scanner scanner = new Scanner(System.in);
        String pwdlString = "0";
        String pwd2String = "-1";
        do {
            System.out.println("请输入密码:");
            pwdlString = scanner.nextLine();
            System.out.println("请再次输入密码:");
            pwd2String = scanner.nextLine();
            if (!pwdlString.equals(pwd2String)) {
                System.out.println("您输入的密码不一致,请重新输入密码!");
            }
        } while (!pwdlString.equals(pwd2String));
        System.out.println("设置密码成功!");

  这段代码可以实现在设置密码时使两次代码输入一致的效果,这段代码先进行两次密码输入,然后if语句判断两次输入的密码是否一致,不一致时输出提示语句,然后执行do...while语句的判断条件,在不一致的情况下继续执行语句。

4.for语句

  语法:for(初始化表达式1;布尔表达式2;表达式3){语句} 初始化表达式1在循环开始前运行一次,可做赋值操作,布尔表达式2返回布尔值,控制循环是否继续执行,表达式3一般都是赋值表达式,在完成一次循环后执行。在for语句中首先执行初始化表达式1,然后判断布尔表达式2是否为真,如果是真则执行语句,当执行完语句后执行表达式3,表达式3执行结束后回到布尔表达式2的位置,如果布尔表达式2的值为假,跳出循环,如果为真,则继续执行循环。以一百以内所有整数相加为例:

        int sum=0;
        for(int i=1;i<=100;i++) {
            sum=sum+i;
        }
        System.out.println("sum="+sum);

  foreach语句的语法:for(type x:obj){引用了x的java语句;} type x是循环变量,依次将obj中的值赋给x,type是这个变量的类型,x是变量的名,冒号后的obj是一个可以被遍历的集合,例如数组。

        int arr[]= {7,10,11,56,99};
        for(int x:arr) {
            System.out.println(x);
        }

  以百钱买百鸡为例,公鸡一只五文钱,母鸡一只三文钱,三只小鸡一文钱,一百文钱买一百只鸡,可以买三种鸡各多少只。

        int cock,hen,chick;
        for(cock=1;cock<=20;cock++) {
            for(hen=1;hen<=33;hen++) {
                for(chick=3;chick<=99;chick+=3) {
                    if(cock*5+hen*3+chick/3==100) {
                        if(cock+hen+chick==100) {
                            System.out.println("公鸡:"+cock+" 母鸡:"+hen+" 小鸡:"+chick);
                        }
                    }
                }
            }
        }

  其结果为

公鸡:4 母鸡:18 小鸡:78
公鸡:8 母鸡:11 小鸡:81
公鸡:12 母鸡:4 小鸡:84

5.循环控制

  break关键字可以中断当前循环,让循环直接结束,continue关键字可以跳过后面的代码直接执行下一次循环。break关键字可以在while语句、do...while语句、for语句还有switch语句中使用,例如:

        while(i>0) {
            i++;
            System.out.println(i);
            if(i==10)
                break;
        }
        System.out.println("循环停止");
        for(int i=0;i<3;i++) {
            System.out.println("i="+i);
            for(int j=0;j<6;j++) {
                System.out.println("j="+j);
                if(j==4) {
                    break;
                }
            }
        }
        Loop:for(int i=0;i<3;i++) {
            System.out.println("i="+i);
            for(int j=0;j<6;j++) {
                System.out.println("j="+j);
                if(j==4) {
                    break Loop;
                }
            }
        }

  在多层循环中,break控制内层循环,不会控制外层循环,当需要控制外层循环时,可以为外层循环添加标签,这时候在break后也添加标签,就可以跳出任意指定的循环。

  continue关键字的适用场景与break类似,但是不适用于switch。例如:

//        输出奇数
        for(int i=1;i<=10;i++) {
            if(i%2==0)
                continue;
            System.out.println("i="+i);
        }
        for(int i=0;i<3;i++) {
            System.out.println("i="+i);
            for(int j=0;j<6;j++) {
                if(j==4)
                    continue;
                System.out.println("j="+j);
            }
        }
        Loop:for(int i=0;i<3;i++) {
            System.out.println("i="+i);
            for(int j=0;j<6;j++) {
                if(j==4)
                    continue Loop;
                System.out.println("j="+j);
            }
        }

 

决策分支

原文:https://www.cnblogs.com/mlzhang/p/14423459.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!