这里写目录标题
一、流程控制语句
重复执行
选择执行
1.1 if 语句
作用
实现选择执行某段代码
语法
if(布尔表达式){
代码;
}
执行过程
如果if判断结果是true,就执行里面的代码;如果判断结果为false,跳过不执行
double money = 10;// 钱包余额
double price = 20;// 菜价
if (money >= price) {
System.out.println("点菜成功,开吃" );
}
1.2 if-else 语句
语法
if(判断){
语句;
} else {
语句;
}
过程
- 执行if,判断如果为true,就执行if后的语句,跳过else不再执行
- 但是如果if判断为false,就跳过if语句,转而执行else
- 从而实现2选1执行
int age = 8;
if (age >= 18) {
System.out.println("欢迎光临,开机!");
} else {
System.out.println("你还小,再等等...");
}
实例
- 定义两个变量 判断他们大小(输出a>b,a<b,a==b)
int a = 1;
int b = 2;
if (a > b){
System.out.println("a > b");
} else {
if (a < b) {
System.out.println("a < b");
} else {
System.out.println("a == b");
}
}
- 定义三个变量,输出最大值(不考虑相等的情况)
int x = 111;
int y = 21;
int z = 3;
if (x > y) {
if (x > z) {
System.out.println("x大,x=" + x);
} else {
System.out.println("z大,z=" + z);
}
} else {
if (y > z) {
System.out.println("y大,y=" + y);
} else {
System.out.println("z大,z=" + z);
}
}
1.3 if-elseif
适合多选一
public static void main(String[] args) {
/**
* 多选一,ifelse嵌套太复杂
* 使用使用 elseif
* 根据钱包选择吃饭
* >= 10000 天上人间
* >= 1000 海鲜盛宴
* >= 500 海底捞
* >= 100 小吃
* < 100 泡面
*/
double money = 10000;
// if (money >= 10000) {
// System.out.println("去天上人间");
// } else {
// if (money >= 1000) {
// System.out.println("去海鲜盛宴");
// } else {
// if (money >= 500) {
// System.out.println("去海底捞" );
// } else {
// if (money >= 100) {
// System.out.println("吃夜市" );
// } else {
// System.out.println("吃泡面" );
// }
// }
// }
// }
if (money >= 10000) {
System.out.println("去天上人间");
} else if (money >= 1000) {
System.out.println("去海鲜盛宴");
} else if (money >= 500) {
System.out.println("去海底捞");
} else if (money >= 100) {
System.out.println("吃夜市");
} else {
System.out.println("吃泡面");
}
/**
* 1)先执行if,如果结果是true,执行if内代码,后面全部跳过不执行
* 2)if结果是false,跳过if,转而判断下个elseif
* 3)如果这个if为true,执行if后,后续不再执行
* 4)如果这个if为false,转而执行第三个if....
* ...
* 5)如果所有if都是false,执行最后一个else
*/
}
1.4 switch
switch做选择执行,类似elseif多选一, 只不过switch只能做等值判断!!!
public class Demo3 {
public static void main(String[] args) {
int num = 1;
if (num == 1) {
System.out.println("打给110");
} else if (num == 2) {
System.out.println("打给120");
} else if (num == 3) {
System.out.println("打给119");
} else {
System.out.println("没有快捷键" );
}
System.out.println("-----------" );
switch(num) {// switch后只能写byte short int char 以及对应的包装类
// String ,枚举
case 1:// case后必须写定值
System.out.println("打给110");
//break;// break破坏打断,作用中断switch执行
case 2:
System.out.println("打给120");
break;
case 3:
System.out.println("打给119");
break;
default:
System.out.println("没有快捷键" );
}
}
}
1.5 while循环
语法
while(布尔表达式){
循环内容;
}
执行流程
- 遇到while,先判断条件,如果条件为true,就执行{}内
- 执行完回头继续判断while,如果条件为true,继续执行… 继续判断…
- 只有当条件为false时结束循环,继续后续代码
public class Demo4 {
public static void main(String[] args) {
/**
* 循环都有4要素
* 1) 循环初始值
* 2) 循环控制条件
* 3) 循环内容
* 4) 循环迭代
*/
// 输出5句HelloWorld
int i = 1;
while(i <= 10) {
System.out.println("HelloWorld" );
i++;
}
// 输出1-10
int j = 1;
while (j < 11) {
System.out.println("j = " + j);
j++;
}
// 输出10-1
int k = 10;
while(k > 0) {
System.out.println("k = " + k);
k--;
}
System.out.println("-------" );
// 输出1-100中既能被3整除又能被5整除的所有整数
int x = 1;
while (x < 101) {
if (x % 3 == 0 && x % 5 == 0) {
System.out.println("x = " + x);
}
x++;
}
// 找到公元1年至今所有闰年
// 能被4整除且不能被100整除或者能被400整除的数
int year = 1;
while (year <= 2024) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.out.println("year = " + year);
}
year++;
}
}
}
1.6 do-while
语法
do {
循环内容;
迭代;
}while(条件);
执行流程
- 遇到do,直接执行{}内
- 执行完再判断条件,如果为对,继续执行do
- 执行完再判断,知道 while判断为false,不再循环
先斩后奏
public class Demo5 {
public static void main(String[] args) {
// 输出1-10
int i = 1;
do {
System.out.println("i = " + i);
i++;
}while(i < 11);
// 输出10-1
int j = 10;
do {
System.out.println("j = " + j);
j--;
}while (j > 0);
// 输出1-100的偶数
int k = 1;
do {
if (k % 2 ==0) {
System.out.println("k = " + k);
}
k++;
}while (k < 101);
// 另一种写法
int x = 0;
do{
System.out.println("x = " + x);
x+=2;
}while (x <= 100);
}
}
1.7 for循环
语法
for(初始值;控制条件;迭代){
循环内容
}
- 遇到for,只初始化一次
- 判断条件,如果为对,直接向下执行循环
- 执行完再回头执行迭代,再判断
- 为true,继续执行,然后再迭代,再判断
- 直到判断为false结束循环
public class Demo6 {
public static void main(String[] args) {
// 输出1-10
for (int i = 1; i < 11; i++) {
System.out.println("i = " + i);
}
System.out.println("-----");
// 输出10-1
for (int i = 10; i > 0; i--) {
System.out.println(i);
}
System.out.println("------------");
// 输出1-100的奇数
// 每行输出5个奇数(即每5个换一行)
for (int i = 1; i < 101; i++) {
if (i % 2 == 1) {
System.out.print(i + " ");
}
if (i % 10 == 0) {
System.out.println( );
}
}
// 输出1-100的和
// 1+2+3+4+5.....+100
int sum = 0;// 和
for(int i = 1;i < 101;i++){
// sum = i + sum;
sum += i;
}
System.out.println("sum = " + sum);
}
}
1.8 利用for循环嵌套打印形状
打印四边形
/**
* 要求输出语句只能输出一个*
* ------ 要求输出以下形状 ------
*/
// 外层循环控制行数
for (int i = 1; i < 5; i++) {
// 内存循环控制列数
for (int j = 1; j < 11; j++) {
System.out.print("*");
}
System.out.println( );
}
输出结果
打印三角形
for (int i = 1; i < 8; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println( );
}
输出结果
打印等腰三角形
先打印前面空白三角形,也就是上图的三角形
for (int i = 1; i < 10; i++) {
for (int j = 0; j < 10-i; j++) {//10-i相当于先打印前面空白三角形
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1 ; j++) {
System.out.print("*");
}
System.out.println( );
}
输出结果
打印乘法表
其实跟打印三角形一样,换汤不换药
for(int i = 1; i < 10 ; i++){
for (int j = 1; j <= i; j++) {
/*
if-else 是为了控制对齐,因为结果大于10占两位,小于10占一位
*/
if(i*j<10){
System.out.print(j+"*"+i+"="+i*j+" ");
}else{
System.out.print(j+"*"+i+"="+i*j+" ");
}
}
System.out.println();
}