控制结构(上)


控制结构的作用是控制程序中语句的执行顺序,它是结构化程序设计的关键。结构化程序设计的基本原则是“自顶向下,逐步细化”,它大致可分为顺序结构、选择结构、循环结构和跳转结构4种。

先介绍顺序结构和选择结构。


1.顺序结构

  顺序结构是最简单、最基本的流程控制。在顺序结构中,只要按照解决问题的顺序写出相应的语句,程序就会自上而下,依次执行每条语句。结构如下:

    语句1:----->语句2------>语句3----->......

代码:

public class Test{
	public static void main(String[] args){
		int a = 1;
		int b = 3;
		int c = a + b;
		System.out.println("c="+c);
	}
}

  


2.选择结构

  java 语言提供了两种基本的选择结构语句:if 语句 和 switch 语句。用这两个语句可以形成4中形式的选择结构。

  1.if 语句

    if 语句是单分支选择结构,它针对某种条件做出相应的处理。if 语句的具体语法格式如下:

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

  如果条件为真,则执行块内语句;否则将跳过该语句块,直接执行该语句块后面的其他语句。示例如下:

public class Test{
	public static void main(String[] args){
		int x = 10;
		int y = 5;
		if(x>y){
			System.out.println("x>y");
		}
		if(x<y){
			System.out.println("x<y");
		}
	}
}

  注:1.if 语句后面不能加分号,否则不管条件是否满足,if语句后的代码块将始终执行。

    2.如果语句块中只有单条语句可以不使用“{}”。

  2.if-else语句

    if-else语句是双分支选择结构。if-else语句用来判定一个条件表达式的值,当值为真时执行一个操作,值为假时执行另一个操作,if-else的语法如下:

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

  说明:为真执行语句1,为假执行语句2。示例如下:

public class Test{
    public static void main(String[] args){
        int x = 10;
        int y = 5;
        if(x>y){
            System.out.println("x>y");
        }else{
            System.out.println("x<y");
        }
    }
}

  3.if 语句的嵌套

    对于复杂的情况,使用嵌套的if-else语句。语法如下:

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

执行过程:某个条件式的值为真,则执行它后面的语句块,其余的被忽略;如果所有的都为假,执行最后一个else后面的语句块。示例如下:

public class Test{
    public static void main(String[] args){
        int score = 85;
        char grade;
        if(score>=90){
            System.out.println("A+");
        }else if(score>=80){
            System.out.println("A");
        }else if(score>=70){
            System.out.println("B");
        }else if(score>=60){
            System.out.println("C");
        }else{
            System.out.println("D");
        }
    }
}

  4.switch 开关语句

    当要从多个分支中选择一个分支去执行,虽然可用if 嵌套语句来实现,但当程序中的分支较多时,程序的可读性就会大大降低,这时可以使用switch 语句来实现,它可以清楚地处理多分支选择问题。switch 语句根据测试表达式的值来决定执行多个操作中的哪一个,语法如下:

switch(){
    case 值1: 语句1;break;
    case 值2: 语句2;break;
    ...
    case 值n: 语句n;break;
   [default:语句块n+1;]
}

  注:1.switch 后面的测试表达式的类型必须是byte,char,short和int类型

    2.值1到值n必须是和测试表达式类型相同的常量,并且它们的值应该互不相等,否则会出现同一个值有两种火多重执行方式的情况。

    3.case后面的语句块可以不用花括号括起来。

    4.break语句的功能是当程序执行完选中的分支后,可以跳出整个switch语句,如果没有break语句,则程序不会做出任何判断,而去执行他后面的case语句 块,直到碰到break语句或执行完n+1为止。

    5.default语句是可选的。

    6.switch语句并不能代替所有的if嵌套语句。这是因为switch结构的条件是一个值,而if-else结构的条件可以是一个范围。

  switch 开关语句示例如下:

import java.util.Scanner;                   //导入Scanner包,可以做输入
public class Test{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个1~7之间的整数");
        int day = sc.nextInt();
        switch(day){
            case1:System.out.println("星期一");break;
            case2:System.out.println("星期二");break;
            case3:System.out.println("星期三");break;
            case4:System.out.println("星期四");break;
            case5:System.out.println("星期五");break;
            case6:System.out.println("星期六");break;
            case7:System.out.println("星期日");break;
            default:System.out.println("星期八");
        }
    }
}

  还可合并case值,示例如下:

              switch(month){
            case1:
            case3:
            case5:
            case7:
            case8:
            case10:
            case12:
                System.out.println("31天");
                break;
            case4:
            case6:
            case9:
            case11:
                System.out.println("30天");
                break;
            case2:
                System.out.println("28或29天");
            default:
            System.out.println("输错了!!!");
        }

 

 

    

 

posted @ 2017-04-06 22:50  小南蛮  阅读(446)  评论(0编辑  收藏  举报