Java 逻辑控制详解分析
目录
- 顺序结构
- 分支结构
- if 语句
- 悬垂 else 问题
- switch 语句
- 循环结构
- while 循环
- break
- continue
- for循环
- do while 循环
顺序结构
顺序结构就是按照代码从上往下执行,我们运行的程序就是从上往下的顺序结构,当遇到方法的时候,才去执行方法。例如:
System.out.println("aaa"); System.out.println("bbb"); System.out.println("ccc");
当改变代码顺序的时候,输出的结果也不一样。例如:
System.out.println("bbb"); System.out.println("ccc"); System.out.println("aaa");
分支结构
if 语句
if 语句的基本语法(单判断):
if(布尔表达式){
//条件满足时执行代码
}
if 语句的基本语法(加否定):
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
if 语句的基本语法(多分支):
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
if 语句当中可以写很多 else if ,但是 if 和 else 只能有一个。
代码实例 1:判断一个数是奇数还是偶数:
int num = 10; if (num % 2 == 0) { System.out.println("num 是偶数"); } else { System.out.println("num 是奇数"); }
代码实例2:判定一个数是正数还是负数。
int num = 10; if (num > 0) { System.out.println("num 是正数"); } else if (num < 0) { System.out.println("num 是负数"); } else { System.out.println("num 是 0"); }
代码实例3:判定一年是不是闰年。
因为闰年的规律是:如果这一年是 4 的倍数,且不是 100 的倍数,那么这一年就是闰年。或者这个数能整除 400 。
Scanner scanner = new Scanner(System.in); int i = scanner.nextInt(); if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) { System.out.println(i + " 是闰年"); } else { System.out.println(i + " 不是闰年"); }
这里是通过 Scanner 来输入一个数。
悬垂 else 问题
此代码输出什么?
int x = 10; int y = 10; if (x == 20) if (y == 10) System.out.println("aaa"); else System.out.println("bbb");
这里什么都不输出 ,因为这里就涉及到了悬垂 else 。else 只与最近的 if 相匹配,这里最近的 if 是 y==10 所以就什么都不输出了。
所以我们平时写代码,一定要加上括号,这样既方便别人阅读代码,也方便我们自己去修改。
switch 语句
基本语法:
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
switch 语句是我们常见的多分支语句,可根据 switch 括号内的变量对应的值去执行相应的 case 语句。而且每个 case 语句下面都要有 break 否则会继续执行下面的 case 语句。当 switch 语句当中没有匹配的 case 语句的时候,就会执行 default 语句。switch 虽然也可以嵌套,但是嵌套之后会很乱,非常不易于阅读代码。所以尽量不要嵌套。
代码示例:
int day = 7; switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("此数字不属于星期"); break; }
循环结构
while 循环
基本语法:
while(循环条件){
循环语句;
}
要注意的是:循环条件是 true 就执行循环语句,否则就结束循环。例如求 1 - 10 的和:
int n = 1; int sum = 0; while (n <= 10){ sum += n; n++; } System.out.println(sum);
这里就是通过 while 循环来计算 1 - 10 的和。
while 循环和 if 语句一样,while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句。所以为了方便阅读和后期的维护,还是应该加上括号。就像这样:
int num = 1; while (num <= 10) System.out.println(num); num++;
因为只能执行一条语句,所以就一直死循环。
break
在循环结构当中,break 也是经常用到的。break 就是让循环提前结束。例如:找到 1 - 10 中第一个 3 的倍数。
int num = 1; while (num <= 10) { if (num % 3 == 0) { System.out.println("找到了 3 的倍数 为:" + num); break; } num++; }
执行到 break 的时候,就会让循环结束。但是要注意的是:如果是多层循环嵌套 break 结束的是最近的一层循环。
continue
continue 的功能是跳过这次循环, 进入下次循环。就是这次循环当中 continue 下面的代码不执行,进入下一次循环。例如:找到 100 - 200 中所有 3 的倍数。
int num = 100; while (num <= 200) { if (num % 3 != 0) { num++; continue; } System.out.println("找到了 3 的倍数, 为:" + num); num++; }
执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句,所以不是 3 的倍数的数就没有打印出来。
for循环
语法:
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量.
相对于 while 循环,for 循环会把这三个部分结合在一起,降低出现 bug 的可能。举例:求 1- 100 的和
int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println("sum = " + sum);
do while 循环
语法:
do{
循环语句;
}while(循环条件);
do while 循环是先执行循环语句,在判断循环条件,如果循环条件为 true 就继续循环,否则就退出循环。不论如何 do while 循环 都会执行一次。循环最后的分号一定不要忘记。举例:求 1 - 100 的和。
int num = 1; int sum = 0; do { sum += num; num++; } while (num <= 100); System.out.println(sum);
一般 do while 很少用到, 更推荐使用 for 和 while 。
到此这篇关于Java 逻辑控制详解分析的文章就介绍到这了,更多相关Java 逻辑控制内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!