# 流程控制
顺序结构:从上到下从左到右
# 分支结构
判断结构
if(逻辑值){
Code;
}
执行顺序:先执行逻辑值,如果为true,则执行代码块;如果为false,则直接跳过不执行
if(逻辑值){
Code1;
} else {
Code2;
}
执行顺序:先执行逻辑值,如果为true,则执行代码块1;反之,执行代码块2
if-else-if --- 都可以用if-else结构嵌套来替代,但是if-else-if结构形式更加简洁
选择结构
switch(数据){
case "abc": ...;break;
case "def":...;break;
}
case之后的选项支持byte/short/int/char,从jdk1.7开始支持String
练习:输入两个数字和一个符号(+ - * /),然后根据输入的符号对数字进行运算
3 / 8 = 0.375
break用于终止当前的switch的执行。如果case之后没有break,继续往下执行,直到遇到break或者执行到swithc的末尾
如果每一个case之后都有break,case之间的顺序不影响结果的。如果有一个或者多个case之后没有break,那么这个时候case之间的顺序影响结果
练习:输入一个数字表示月份,第二个数字表示天数,然后输出这一天是这一年的第几天(不考虑闰年)
# 循环结构
用于重复做一些相同或者相似的事儿
while(逻辑值){
Code;
}
{width="3.0416666666666665in"
height="2.439583333333333in"}
练习:
求1-100之间的所有偶数的和
求300以内的能被3整除而不能被7整除的数
输入一个数字,输出这个数字是一个几位数 7684852 -> 7
输入一个数字,判断这个数字是否是一个质数 --- 除了1和本身以外,不能被其他的数字整除
break也可以用在循环中表示中止循环
do{
Code;
}while(logical);
{width="2.71875in"
height="1.7659722222222223in"}即使判断条件不满足,代码块依然会执行一次
循环的要素:变量控制次数;判断条件;变量值的变化
# for循环
for(定义的变量; 判断条件; 变量值的变化){
代码块;
}
while循环和for循环实际上可以相互转换的。但是实际使用中,如果遇到了变化不规律或者次数不固定的场景,那么这个时候一般是使用while循环;如果变化比较规律或者次数比较固定,使用for循环
// 从控制台获取一个大于10的偶数
Scanner s = new Scanner(System.in);
int n = s.nextInt();
while(n < 10 || n % 2 == 1){
n = s.nextInt();
}
/* 可以用for循环来做,但是for循环的格式比较奇怪
for( ; n < 10 || n % 2 == 1; n = s.nextInt()){
}
*/
循环的嵌套
# break和continue
break可以用于选择结构和循环结构。表示中止当前的一层结构
continue只能用于循环结构。表示跳过当前一次循环,继续下次循环
注意:break和continue支持标号形式
思考:用一个循环实现九九乘法表