文章目录
一、概述
二、顺序结构
顺序结构比较简单,就是按照代码的书写顺序一行一行的执行。
System.out.println("1");
System.out.println("2");
System.out.println("3");
三、分支结构(选择结构)
1. if 语句
语法格式1:
if(布尔表达式) {
//语句
}
语法格式2:
if(布尔表达式) {
// 语句1
}else{
// 语句2
}
语法格式3:
if(布尔表达式1) {
// 语句1
}else if(布尔表达式2) {
// 语句2
}else {
// 语句3
}
【练习】
- 判断一个数字是奇数还是偶数
int num = 10;
if (num % 2 == 0) {
System.out.println("num 是偶数");
}else {
System.out.println("num 是奇数");
}
- 判断一个数字是正数、负数、还是0
int num = 10;
if (num > 0) {
System.out.println("正数");
}else if (num < 0) {
System.out.println("负数");
}else {
System.out.println("0");
}
- 判断一个年份是否为闰年
闰年有普通闰年和世纪闰年之分。
普通闰年:公历年份是4的倍数,且不是100的倍数。
实际闰年:公历年份是整百数的,且必须是400的倍数。
int year = 2000;
if (year % 100 == 0) {
//世纪闰年
if (year % 400 == 0) {
System.out.println("是闰年");
}else {
System.out.println("不是闰年");
}
}else {
//普通闰年
if (year % 4 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
}
2. switch 语句
基本语法:
switch(表达式) {
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}
…
default:{
内容都不满足时执行语句;
[break;]
}
}
执行流程:
- 先计算表达式的值;
- 和case依次比较,一旦有相应的匹配就执行该项下的语句,直到遇到break时结束;
- 当表达式的值没有与所列项匹配时,执行default。
**代码示例:**根据day的值输出星期
int day = 1;
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常量串、枚举类型
四、循环结构
1. while 循环
基本语法:
while(循环条件) {
循环语句;
}
循环条件为true,则执行循环语句;否则结束循环。
代码示例1: 打印 1 - 10 的数字
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
代码示例2: 计算 1 - 100 的和(计算1 - 100 奇数的和)
int i = 1;
int sum = 0;
while (i <= 100) {
sum += i;
i++;
}
System.out.println(sum); //5050
int a = 1;
int sumOdd = 0; //奇数和的初始值
while (i <= 100) {
sumOdd += a;
i += 2;
}
System.out.println(sumOdd);
代码示例3: 计算 5 的阶乘
int i = 1;
int result = 1;
while (i <= 5) {
result *= i;
i++;
}
System.out.println(result); //120
代码示例5: 计算 1!+ 2!+ 3!+ 4!+ 5!
int a = 1;
int sum = 0;
while (a <= 5) { //外层循环做加法,计算各个阶乘相加的值
int i = 1;
int ret = 1;
while (i <= a) { //内层循环计算阶乘的值
ret *= i;
i++;
}
sum += ret;
a++;
}
System.out.println(sum);
}
1.1 break
break 的功能是让循环提前结束。
int i = 1;
while (i <= 10) {
if (i == 2) {
break;
}
System.out.println(i); //输出1
i++;
}
1.2 continue
continue 的功能是跳过这次循环, 立即进入下次循环。
int i = 1;
while (i <= 10) {
if (i == 2) {
continue;
}
System.out.println(i); //死循环了,这里i到2的时候,跳过本次循环,没有+1,i一直是2,一直循环
i++;
}
题目示例: 找到 1 - 100 内,既能被3整除,也能被5整除的数字。 要求:使用break或者continue当中的一个。
int i = 1;
while (i <= 100) {
if (i % 15 != 0) {
i++;
continue;
}
System.out.println(i);
i++;
}
2. for 循环
【基本语法】
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
- 表达式1:用于初始化循环变量初始值设置,在循环最开始时执行,且执行一次
- 表达式2:循环条件,满则循环继续,否则循环结束
- 表达式3:循环变量更新方式
【执行过程】
①②③④—>②③④—>②③④—>……—>②为false,循环结束。
【代码示例】
- 打印 1 - 10 的数字
for (int i = 1; i < 11; i++) {
System.out.println(i);
}
- 计算 1 - 100 的和
int sum = 0;
for (int i = 0; i < 101; i++) {
sum += i;
}
System.out.println(sum); //5050
- 计算 5 的阶乘
int sum = 1;
for (int i = 1; i <= 5; i++) {
sum *= i;
}
System.out.println(sum); //120
- 计算 1!+ 2!+ 3!+ 4!+ 5!
int result = 0;
for (int i = 1; i <= 5; i++) {
int sum = 1;
for (int j = 1; j <= i; j++) {
sum *= j;
}
result += sum;
}
System.out.println(result); //153
3. do while 循环
do{
循环语句;
}while(循环条件);
先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束。
【代码示例】
打印 1 - 10
int i = 1;
do {
System.out.println(i);
i++;
}while (i <= 10);
【注意】
- do while 循环最后的分号不要忘记
- 一般 do while 很少用到,更推荐使用 for 和 while