一、顺序结构
按代码顺序,从上到下以此执行
二、分支结构
if语句
格式一
if(判断语句){
语句体;
}
先判断语句结果;
如果结果为true,执行语句体;
如果结果为false,则不执行。
格式二
if(判断语句){
语句体1;
}
else{
语句体2;
}
先判断语句结果;
如果结果为true,执行语句体;
如果结果为false,则执行语句2。
格式三
if(判断语句1){
语句体1;
}
else if(判断条件2){
语句体2;
}
...
else{
语句体n+1;
}
先判断语句1结果;
如果结果为true,执行语句体1;
如果结果为false,则判断语句2结果,依次重复以上操作。
若都不成立,执行最后的else
注意事项:
1)如果语句体只有一条执行语句,{}可以省略;
2)if后的()和{}间不要加“;”
switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default//语法上非必要,但是加上更利于解决问题
语句体n+1;
break;
}
执行流程:
1)用()中将要匹配的值,跟case给出的选项,逐个进行匹配,匹配成功,执行对应语句,再由break结束整个switch语句
2)如果都匹配失败,执行最后的default
示例:
public static void switchTest(){
Scanner sc = new Scanner(System.in);
System.out.printf("请输入");
int week = sc.netInt();
switch(week){
case 1:
System.out.printf("星期一");
break;
case 2:
System.out.printf("星期二");
case 3:
System.out.printf("星期三");
break;
case 4:
System.out.printf("星期四");
break;
case 5:
System.out.printf("星期五");
break;
case 6:
System.out.printf("星期六");
break;
case 7:
System.out.printf("星期天");
break;
default
System.out.printf("您的输入错误");
break;
}
}
注意:
1.case后面的值不能重复
2.case后面的值只能是字面量,不能是变量
3.switch()可以接受的类型:
1)基本数据类型:byte short char int
2)引用数据类型:jdk5版本开始可以是枚举,jdk7版本开始可以是String字符串
case穿透现象:无break,会持续按顺序执行代码
当case重复出现代码,可用case穿透优化代码
public static void switchTest(){
Scanner sc = new Scanner(System.in);
System.out.printf("请输入");
int week = sc.netInt();
switch(week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.printf("工作日");
break;
case 6:
case 7:
System.out.printf("休息日");
break;
default
System.out.printf("您的输入错误");
break;
}
}
jdk14版本开始,case后允许编写多个数据,多个数据间用逗号分隔
public static void switchTest(){
Scanner sc = new Scanner(System.in);
System.out.printf("请输入");
int week = sc.netInt();
switch(week){
case 1,2,3,4,5:
System.out.printf("工作日");
break;
case 6,7:
System.out.printf("休息日");
break;
default
System.out.printf("您的输入错误");
break;
}
}
补充:case 值→要执行的代码
可以省略break,但仍起break作用
选择if和switch语句
if语句:适用于范围性的判断
switch语句:适用于固定值的匹配
三、循环语句
for循环
格式:
for(初始化语句;条件判断句;条件控制语句){
循环体语句;
}
2.执行流程:
1)执行初始化语句,在整个循环过程中,只执行一次
2)执行判断条件,看其返回结果是true,false
false : 循环结束
true :执行第三步,执行循环体语句
4)执行条件控制语句
5) 回到2继续...
示例:
public static void print(){
Scanner sc = new Scanner(System.in);
System.out.printf("请输入");
int n = sc.netInt();
if(n<1)
System.out.println("您输入的数值有误");
else{
for(int i=1;i<n;i++)
{
System.out.println("哈哈哈哈哈哈");
}
}
}
注:循环中控制循环的变量可以在循环体中继续使用
循环的条件控制语句,不要局限的认为只能是--
注意事项
1)for循环{}中定义的变量,在一轮循环结束后,都会在内存中释放,不能再在{}外使用;
for()中定义的变量,在整个循环结束后,会从内存中释
public static void print999(){
for(int i = 1;i <= 9;i++){
for(int j=1;j<=i;j++){
System.out.print(j + "*" + i + "=" + i*j + "\t");
}
System.out.println( );
}
}
while循环
格式
while(条件判断语句){
循环体语句;
条件控制语句;
}
2.执行步骤
1)执行初始化语句
2)执行判断条件,看其返回结果是true,false
false : 循环结束
true :进入第三步
3)执行循环体语句
4)执行条件控制语句
5)回到2继续
do...while循环
格式
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行步骤
1)执行初始化语句
2)执行循环体语句
3)执行条件控制语句
4)执行判断条件,看其返回结果是true,false
false :循环结束
true :回到第二步继续
3.特点:至少执行一次循环体
三种循环区别
for循环和while循环先判断条件再执行
do...while循环先执行再判断条件
for循环:用于控制循环的变量,在循环结束后不可继续使用
while循环:用于控制循环的变量,在循环结束后可以继续使用
for循环和while循环本质无区别
跳转控制语句
break:结束循环和switch语句,只能在这两类语句使用
continue:跳过本次循环,继续下次循环,只能在循环中使用
注意:break和continue下不允许再写代码,执行不到,属于无效代码
标号:在循环前加上合法的标识符,写在break或者continue后,可指挥对该循环起作用
示例:
lo:
while(true){
switch(week){
.....
case 3:
System.out.println("星期三");
break lo;//直接结束外层循环
.....
}
}
死循环
for(;;){}
while(true){}
do{}while(true);
Random
import java.util.Random;//导包
public class Test{
public static void main(String[] args){
Random r = new Random();//r为变量,可以替换为其他的
int num = r.netInt(10);//数值在0-9
}
}
数值在a-b之间的随机数
int num = r.netInt(b+1-a)+a;