1,顺序结构

就是从上往下依次执行的结构

System.out.println(1);//1
System.out.println(2);//2
System.out.println(3);//3

2,分支结构

根据不同的条件执行相应的语句,满足条件怎么样,不满足会怎么样

2.1 if语句

基本语法1

if(布尔表达式){
     //语句
}

如果布尔表达式结果为true,执⾏if中的语句,否则不执⾏

基本语法2

if(布尔表达式) {
    //语句1
}else {
    //语句2
}

不能满足if条件的就在else中执行语句2

基本语法3

if(布尔表达式1) {
    //语句1
}else if(布尔表达式2){
    //语句2
}else {
    //语句3
}

表达式1成⽴,执⾏语句1,否则表达式2成⽴,执⾏语句2,否则执⾏语句3

【练习】

1.判断⼀个数字是奇数还是偶数

int num = 10;
if(num % 2 == 0){
        System.out.println("偶数");
}else {
        System.out.println("奇数");
}

2.判断⼀个数字是正数,负数,还是零

public class Test {
    public static void main(String[] args) {
        int num = 9;
        if(num > 0) {
            System.out.println("正数");
        }else if(num < 0){
            System.out.println("负数");
        }else {
            System.out.println(0);
        }
    }

3.判断⼀个年份是否为闰年

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        if(((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) {
            System.out.println("闰年");
        }else {
            System.out.println("不是闰年");
        }
    }

口诀:4年闰100年不闰,400年闰

注意:悬垂else问题

else只与他最近的if相匹配,不会因为缩进而匹配

int x = 10;
int y = 10;
if (x == 10) 
    if (y == 10)
        System.out.println("aaa");
else 
        System.out.println("bbb");
//aaa

建议if,else后面都加上大括号

2.2 switch语句

基本语法

switch(表达式){
    case 常量值1:
        //语句1;
        break;
    case 常量值2:
        //语句2;
        break;
    default:
        //都不满足执行
        //语句3;
        break;
}
  1. 看表达式的值与哪一个case值匹配就进去哪个case语句

  2. 都不满足就进入default

  3. break是出口,没有break就顺序执行所有case

int day = 2;
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;
}

【注意】

  • 多个case后的常量值不能一样
  • switch的括号内只能是以下类型的表达式: 
  • 基本类型:byte、char、short、int,注意不能是long类型。
  • 引⽤类型:String常量串、枚举类型

不推荐switch嵌套

3,循环结构

反复执行的结构

3.1 while循环

基本语法

while (循环条件) {
    //循环语句
}

【示例1】打印1-10的数字

int i = 1;
while(i <= 10) {
    System.out.println(i);
    i++;
}

【示例2】计算1-100的和

int i = 1;
int sum = 0;
while(i <= 100) {
    sum +=i;
    i++;
}
System.out.println(sum);

【示例3】计算5的阶乘

int fac = 1;
int i = 1;
while(i <= 5) {
    fac *= i;
    i++;
}
System.out.println(fac);//120

【示例4】计算1!+2!+3!+4!+5!

int sum = 0;
int fac = 1;
int i = 1;
int j = 1;
while(i <= 5) {
    while (j <= i){
        fac *= j;
        j++;
        sum += fac;
    }
    i++;
}
System.out.println(sum);//153

内层是求一个数的阶乘,外层是产生1~5,最后加起来

3.1.1 break和continue

  • break跳出循环,continue跳过后面的语句⽴刻进⼊下次循环

3.2 for循环

基本语法

for(表达式1; 布尔表达式2; 表达式3) {
    //表达式4
}

执行顺序:1-->2-->4-->3-->2-->4-->3,243循环

  • 1 初始化只执行一次
  • 2 循环条件,满足则循环继续,否则循环结束
  • 3 循环变量更新⽅式

多层for循环嵌套的顺序

先执行里层的循环在执行外层循环

循环次数

1,与外层循环有关

int a = 0;
int b = 0;
for (int i = 1; i <= 10; i++) {
    for (int j = 1; j <= i; j++) {
        //循环体
        a++;
    }
    b++;
}
System.out.println(a);//内层循环次数:55
System.out.println(b);//外层循环次数:10

i = 1, j = 1

i = 2, j = 1, 2

i = 3, j = 1, 2, 3

例子:9*9乘法表

//打印9*9乘法表
for (int i = 1; i < 10; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.printf("%d * %d = %-4d ",i,j,i*j);
    }
    System.out.println();
}

2,与外层循环无关

int a = 0;
int b = 0;
for (int i = 1; i <= 10; i++) {
    for (int j = 1; j <= 10; j++) {
        //循环体
        a++;
    }
    b++;
}
System.out.println(a);//100
System.out.println(b);//10

i = 1, j = 1~10

i = 2, j = 1~10

i = 3, j = 1~10

这种很容易看出来,两者相乘就行了

【示例3】计算5的阶乘

int fac = 1;
for (int i = 1; i <= 5; i++) {
    fac *= i;
}
System.out.println(fac);//120

【示例4】计算1!+2!+3!+4!+5!

int sum = 0;
for (int i = 1; i <= 5; i++) {
    int fac = 1;
        for (int j = 1; j <= i; j++) {
            fac *= j;
    }
    sum += fac;
}
System.out.println(sum);//153

3.3 do...while循环

【示例1】打印1-10的数字

int num = 1;
do {
    System.out.println(num);
    num++;
} while (num <= 10);

注意:while后面的分号不要忘记

if,switch, for, while后面都不要加分号,否则不会进入循环

总结:主要学习了分支和循环语句,if,switch,while,for,do...while语句的使用和基本语法

更多推荐