流程控制语句

流程结构一共有三种,顺序结构,选择结构,循环结构。任何问题都能使用这三种结构来解决。

 

顺序结构

就是从上往下依次执行

 

选择结构

 

  • 1.if 语句

if语句有三种形式

1.if(条件表达式){执行体}

  当if中的条件为true的时候,执行大括号中的执行体,当if中的条件为false的时候,什么也不执行。

2.if(条件表达式){执行体}else{执行体}

  当if中的条件为true时,执行if的执行体,当if中的条件为false时,执行else的执行体

3.if(条件表达式1){执行体1}else if(条件表达式2){执行体2}...else{其他执行体}

  在if...else if...else语句中,首先判断条件1是否满足,不满足再判断条件二是否满足……只要有一个条件满足,则后面的条件都不再执行。

  所以,多条件判断用 if...else if...else 效率更高

 

 

  • 2.switch语句

格式:

 1 switch(表达式){
 2             case     常量1:
 3                         要执行的语句;
 4             break;
 5             case     常量2:
 6                         要执行的语句;
 7             break;
 8             case     常量3:
 9                         要执行的语句;
10             break;
11             ……
12             
13             default:
14                         要执行的语句;
15             break;            
16         }

case 中的常量类型可以是 byte、short、int、char、enum、String

其中enum是JDK5开始支持的,String 是JDK7开始支持

 

需要注意的问题有:

1.执行顺序与default书写的位置无关,一定是先与case比较,没有符合的case时才走default

 1 switch(i){
 2         
 3     case 1:
 4         System.out.println("星期一");
 5         break
 6     default:
 7         System.out.println("输入错误!请输入数字1-7之间的整数!");
 8         break;
 9     case 2:
10         System.out.println("星期二");
11         break;
12     case 3:
13         System.out.println("星期三");
14         break;
15     case 4:
16         System.out.println("星期四");
17         break;
18     case 5:
19         System.out.println("星期五");
20         break;
21     case 6:
22         System.out.println("星期六");
23         break;
24     case 7:
25         System.out.println("星期日");
26         break;
27     
28 }

结果:

2
星期二
8
输入错误!请输入数字1-7之间的整数!

 

2.符合case条件时,才会执行语句

3.break起跳出switch语句的作用,没有break会在符合条件的时候一直向下穿透

  此时如果default写在最后,也会执行default里面的语句,如:

 1 switch(i){        
 2     case 1:
 3         System.out.println("星期一");
 4         break;    
 5     case 2:
 6         System.out.println("星期二");
 7         break;
 8     case 3:
 9         System.out.println("星期三");
10         break;
11     case 4:
12         System.out.println("星期四");
13         break;
14     case 5:
15         System.out.println("星期五");
16         break;
17     case 6:
18         System.out.println("星期六");
19         //break;
20     case 7:
21         System.out.println("星期日");
22         //break;
23     default:
24         System.out.println("输入错误!请输入数字1-7之间的整数!");
25         break;
26 }
请输入数字1-7之间的整数,输入字符退出
6
星期六
星期日
输入错误!请输入数字1-7之间的整数!
程序结束!  

 default写在上面则不会执行

 

另,执行体相同的case可以合并

循环结构

1.while(循环条件){循环体}

2.do{循环体}while(循环条件);

  do...while 循环的特点是不管条件满不满足,都先执行一次循环体

3.for 循环

 

死循环的写法

while(true){}

for(;true;){}

for(;;){}

do{}while(true);

 

注意,while(true){}; //编译会报错,最后的分号会是无法访问的语句

 

嵌套循环

嵌套循环是指在一个循环结构中嵌套另一个循环结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套。用的最多的是for循环嵌套for循环。

总循环次数等于内循环次数乘以外循环次数。

 

 

跳出循环涉及到两个关键字 breakcontinue

break 是终止整个循环,如果是在嵌套的循环中,那么就是跳出离 break 最近的循环

(break 还可作用于switch条件语句中,作用是终止某个case并跳出switch结构)

 

continue 是终止本次循环,继续执行程序,如果是在嵌套循环中,则跟break一样是就近原则 

 

要想跳出外层循环可以对要跳出的循环使用标记,如:

1 a: for(int i=1;i<=9;i++){
2     for(int j=1;j<=i;j++){
3         if(i==4)break a;
4         System.out.print(j+"*"+i+"="+i*j+"\t");
5     }
6     System.out.println();
7 }
1 a: for(int i=1;i<=9;i++){
2     for(int j=1;j<=i;j++){
3         if(i==4)continue a;
4         System.out.print(j+"*"+i+"="+i*j+"\t");
5     }
6     System.out.println();
7 }

 

 

 

 

==============================================

打印腰为6的等腰直角三角形

分析:

一共要打印6行,所以外层循环次数是6,

而这6行,每一行打印的列数依次为 1 2 3 4 5 6,为递增等差数列  an = a1+(n-1)*d

i: 1 2 3 4 5 6

j:1 2 3 4 5 6

 j =i;

1 for(int i=1;i<=6;i++){
2     for(int j=1;j<=i;j++){
3         System.out.print("* ");
4     }
5     System.out.println();
6 }

结果为:

*
* *
* * *
* * * *
* * * * *
* * * * * *

 

如果要倒着打印即打印出如下结果

* * * * * *
* * * * *
* * * *
* * *
* *
*

 

分析:

一共要打印6行,所以外层循环次数是6,

而这6行,每一行打印的列数依次为 6 5 4 3 2 1,为递减等差数列  an = a1+(n-1)*d

i: 1 2 3 4 5 6

j:6 5 4 3 2 1

 j =6+(i-1)*(-1)=7-i;

 

所以程序为

1 for(int i=1;i<=6;i++){
2     for(int j=1;j<=7-i;j++){
3         System.out.print("* ");
4     }
5     System.out.println();
6 }

 

 

==============================================

打印腰为3的等腰三角形

  O
 O O O
O O O O O

 

分析:

便于效果的观察,可以理解为打印出

X X X O
X X O O O
X O O O O O

 

所以,第一步要打印出

X X X
X X
X

内循环每次打印的个数为 3 2 1,为递减等差数列  

an = a1+(n-1)*d

 

i: 1 2 3

j: 3 2 1

 

j=3+(i-1)*(-1)=4-i;

代码为

1 for(int i=1;i<=3;i++){
2     for(int j=1;j<=4-i;j++){
3         System.out.print("X ");
4     }
5     System.out.println();
6 }

接下来要打印的是

X X X O
X X O O O
X O O O O O

在第一次打印的基础上,每一行后面又是 O ,个数分别为1 3 5 7 9 等差数列 , j = 2*i - 1;

代码为

1 for(int i=1;i<=3;i++){
2     for(int j=1;j<=4-i;j++){
3         System.out.print("X ");
4     }
5     for(int j=1;j<=2*i-1;j++){
6         System.out.print("O ");
7     }
8     System.out.println();
9 }

 

 

最后将 ‘X’ 替换成空格就可以打印出题目中的等腰三角形了

 

posted @ 2019-09-05 17:49  绮丽梦境  阅读(248)  评论(0编辑  收藏  举报