Java分支和循环
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;
}
-
看表达式的值与哪一个case值匹配就进去哪个case语句
-
都不满足就进入default
-
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语句的使用和基本语法
更多推荐

所有评论(0)