控制结构的作用是控制程序中语句的执行顺序,它是结构化程序设计的关键。结构化程序设计的基本原则是“自顶向下,逐步细化”,它大致可分为顺序结构、选择结构、循环结构和跳转结构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("输错了!!!"); }
原文:http://www.cnblogs.com/xiaonanman/p/6675871.html