技术源 WWW.JOCK168.COM
第四章 Java语法基本语法(下)

发布于:2015-03-19 17:21亚博vip手机版网页:

 


4.6 流程控制

    一般来说,程序的执行流程是从上到下逐行执行的。一条语句执行完后再执行下一条语句,直到程序的末尾。这个执行流程可以通过下图来表示:
    图1.jpg
    但是程序的整个执行流程并不是一成不变的。很多时候需要根据不同的条件或状态来改变程序的执行流程,或者反复执行某些语句来实现特定功能,这些情况在程序中经常发生。

    4.6.1 if判断

    如果符合某种条件就执行相应语句,可以使用if来实现这个功能。其语法结构如下:

    if(条件表达式){
        语句块;
    }

    说明:只有当条件表达式值为true(真)时,语句块才会被执行。程序执行流程图如下:
    图2.jpg
    范例:IfDemo.java

    public class IfDemo{
        public static void main(String[] args){
            int num1 = 5;
            int num2 = 4;
            if(num1 > num2){
                System.out.println(num + "大于" + num2);
            }
        }
    }

    当条件表达式的结果为true(真)时,会执行代码块中的语句;当条件表达式的结果为false(假)时,不会执行代码块中的语句。
    如果想条件表达式结果为true时执行某些语句,而条件表达式结果为false时执行另外一些语句,则可以使用if...else...来实现,其语法结构如下:

    if(条件表达式){
        语句块1;
    }else{
        语句块2;
    }

    说明:当条件表达式值为true(真)时,执行语句块1;值为false(假)时,执行语句块2。执行完if判断后,再执行其它语句。程序执行流程图如下:
    图3.jpg
    范例:IfElseDemo.java

    public class IfElseDemo{
        public static void main(String[] args){
            int num1 = 3;
            int num2 = 4;
            if(num > 4){
                System.out.println(num1 + "大于" + num2);
            }else{
                System.out.println(num1 + "小于" + num2);
            }
        }
    }

    如果根据不同条件表达式中来决定执行那些语句的话,还可以使用if...else...的嵌套来完成。其语法格式如下:

    if(条件表达式1){
        语句块1;
    }else if(条件表达式2){
        语句块2;
    }else{
        语句块3;
    }

    说明:当条件表达式1值为true(真)时,执行语句块1;条件表达式1值为false(假)时,执行条件表达式2的判断,如果条件表达式2的值为true(真)就执行语句块2,条件表达式2的值为false(假)就执行语句块3。执行完if代码块后,执行后面其它语句。程序执行流程图如下:
    图4.jpg
    范例:IfElseNest.java

    public class IfElseNest{
        public static void main(String[] args){
            int score = 75;
            char result;
            if(score >= 90){
                result = 'A';
            }else if(score >= 80 && score < 90){
                result = 'B';
            }else if(score >= 70 && score < 80){
                result = 'C';
            }else if(score >= 60 && score < 70){
                result = 'D';
            }else{
                result = 'E';
            }
            System.out.println(score + "分等级为:" + result);
        }
    }


    4.6.2 switch多重选择

    当if...else...嵌套多了后,程序代码会变得非常臃肿,而switch语句可以将多选一的情况简化,使程序代码变得简洁易懂。在JDK7之前,switch只能用于比较整数和字符。而JDK7之后,除了可以比较整数和字符外,还可以比较字符串和Enum。switch语法格式如下:

    switch(变量或表达式){
        case 值1:
        语句块1;
        break;
    case 值2:
        语句块2;
        break;
    ......
    case 值n:
        语句块n;
        break;
    default:
        语句块;
        break;
    }

    说明:首先根据switch后括号中的变量或表达式的值与case的设置的值进行比对,如果符合就执行之后的语句块,直到遇到break后离开switch区块,如果没有符合的值,则会执行default后的语句块。default不一定需要,如果不需要处理默认动作,可以省略default块。程序执行流程图如下:
    图5.jpg
    范例:SwitchDemo.java

    public class SwitchDemo{
        public static void main(String[] args){
            int num1 = 60, num2 = 4;
            char operate = '+';
            switch(operate){
                case '+':
                System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
                break;
            case '-':
                System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
                break;
            case '*':
                System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
                break;
            case '/':
                System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
                break;
            }
        }
    }


    4.6.3 for循环

    在Java中如果要对某些语句块重复执行指定次数,就可以使用for循环。语法格式如下:

    for(循环变量初值; 判断条件; 循环变量增减量){
        语句块;
    }

    说明:for循环语法的圆括号中,“循环变量初值”只会执行一次,结束for循环后变量就会消失。而“判断条件”则是每次执行循环体前都会执行一次,且值必须是true或false。true就会执行循环体,false就会结束循环。“循环变量增减量”则是每次执行完循环体后就会执行一次,然后再执行“判断条件”。程序执行流程图如下:
    图6.jpg
    示例:CalculateDemo.java

    public class CalculateDemo{
        public static void main(String[] args){
            int sum = 0;
            for(int i = 1; i <= 10; i++){
                sum += i;
            }
            System.out.println(sum);
        }
    }

    for循环还可以嵌套使用来完成一些特殊的功能。比如打印三角形,九九乘法表等。以九九乘法表为例来说明嵌套for循环的使用。示例代码如下:
    范例:NineNineTableDemo.java

    public class NineNineTableDemo{
        public static void main(String[] args){
            int i, j;
            for(i = 1; i<=9; i++){
                for(j = 1; j<=9; j++){
                System.out.print(i+"*"+j+"="+(i*j)+"\t");
            }
            System.out.println();
            }
        }
    }

    运行结果如下:
    550a944317a06.jpg

    4.6.4 while循环

    Java提供while循环,可根据指定循环条件来判断是否执行循环体。语法格式如下:

    while(循环条件){
        循环语句块;
    }

    说明:如果循环体只有一行语句,则while后的“{”和“}”可以省略不写,但当有两行以上语句时,就必须在写了。while主要用于停止条件必须在执行时期判断的重复性动作。程序执行流程图如下:
    图8.jpg
    范例:WhileDemo.java

    public class WhileDemo{
        public static void main(String[] args){
            int i = 10;
            while(i>0){
                System.out.println(i);
            i--;
            }
        }
    }

    本例会循环输出10到1这几个数值。

    4.6.5 do...while循环

    do...while循环也是根据指定循环条件来判断是否执行循环体。它和while循环不同之处在于,do...while循环是先执行一次循环体后再判断循环条件;而while循环是先判断循环条件,当满足循环条件后才会执行循环体。因此,do...while至少会执行一次循环体。语法格式如下:

    do{
        循环体语句块;
    }while(循环条件);

    程序流程图如下:
    图9.jpg
    范例:DoWhileDemo.java

    public class DoWhileDemo{
        public static void main(String[] args){
            int num;
            do{
                num = (int)(Math.random()*21);//生成0-20的随机数
                System.out.println(num);
            }while(num != 10);
        }
    }

    本例只要num的值不为10就会一直循环并输出,当num的值为10时就退出循环。

    4.6.6 break和continue

    break可以让程序退出当前switch、for、while、do...while的区域块,并执行该区域块后的语句。在switch中主要用来中断下一个case比较;而在for、while、do...while中主要用于中断当前循环。
    而continue的作用与break类似,它使用于for、while、do...while循环。与break用于循环相对比,break是结束当前循环,而continue只会结束本次循环,并进入下一次循环。
    范例:BreakDemo.java

    public class BreakDemo{
        public static void main(String[] args){
            int num = 0;
            while(num > 10){
            if(num > 5) break;
                System.out.println(num);
            num++;
            }
        }
    }

    本例输出0到4这几个数。
    范例:ContinueDemo.java

    public class ContinueDemo{
        public static void main(String[] args){
            int num = 0;
            while(num > 10){
            if(num % 2 == 0) continue;
                System.out.println(num);
            num++;
            }
        }
    }


    本例输出0到10之间的奇数。

 
  • 链接

  • 百度
  • 新浪
  •