流程控制语句

Java中的流程控制语句一共有三种,即 顺序语句,条件语句,循环语句

顺序语句就是从上往下依次执行

 

条件语句

 

if 语句

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

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

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

 

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

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

 

值得注意的是,当条件一不满足时,这个条件就被排除掉了,在条件一不满足的基础上判断条件二

 1 public static void ifElseIfDemo(){
 2     System.out.println("请输入成绩,输入字符退出:");
 3     Scanner sc = new Scanner(System.in);
 4     
 5     while(sc.hasNextDouble()){
 6         double grade = sc.nextDouble();
 7         if(grade<0 || grade>100){
 8             System.out.println("您输入的成绩不合法!请重新输入!");
 9         }else if(grade >=90){
10             System.out.println("优!");
11         }else if(grade >=80){
12             System.out.println("良!");
13         }else if(grade >=70){
14             System.out.println("好!");
15         }else if(grade >=60){
16             System.out.println("及格!");
17         }else{
18             System.out.println("不及格!");    
19         }        
20     }
21     System.out.println("程序结束!");
22 }

如上所示,else if 的判断条件不必写 (grade>=90&&grade<=100),因为条件一已经做过了筛选

 

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(;;){}

 

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

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

(break 还可作用于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 }

 

 

嵌套循环

嵌套循环用的最多的是for循环

其中,外层循环控制的是 大的循环一共循环多少次,内层循环控制的是 每次循环的内容

一般会在外层循环结束时换行,这样,外层循环控制的就是一共有多少行,内层循环控制的就是每行的具体内容

 

 

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

打印腰为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’ 替换成空格就可以打印出题目中的等腰三角形了

 

转载于:https://www.cnblogs.com/shizunatsu/p/11454660.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值