顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。
如果调整代码的书写顺序,则执行顺序也发生变化:

if 语句的基本语法形式包括以下三种:

代码示例
1、判定一个数字是奇数还是偶数
public static void main(String[] args) {int num = 13;if (num % 2 == 0) {System.out.println("偶数");} else {System.out.println("奇数");}
}
2、判定一个整数是正数还是负数
public static void main(String[] args) {int num = -10;if (num > 0) {System.out.println("num 是正数");} else if (num < 0) {System.out.println("num 是负数");} else {System.out.println("num 是0");}
}
3、判定某一年份是否是闰年
public static void main(String[] args) {int year = 2023;if (year%4 == 0 && year%100 != 0 || year%400 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}
}
注意事项
1、悬垂 else 问题


2、代码风格问题

3、分号问题
此处多写了一个分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,此时不论 if 成立于否 { } 代码块里的代码都会执行:
int x = 20;
if (x == 10); {System.out.println("hehe");
}
// 运行结果
hehe
语法格式如下:
switch(整数|枚举|字符|字符串) {case 内容1: {内容满足时执行语句;[break;]}case 内容2: {内容满足时执行语句;[break;]}...default: {内容都不满足时执行语句;[break;]}
}
几点说明
代码示例
根据 day 的值输出星期几
int day = 3;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;}
}
循环条件为 true,则执行循环语句,否则结束循环。语法格式如下:
while(布尔表达式){循环语句;
}
注意事项
代码示例
1、打印 1 - 10 的数字
int num = 1;
while(num <= 10){System.out.println(num++);
}
2、计算 1 - 100 的和
int num = 1;
int sum = 0;
while(num <= 100){sum += num;num += 1;
}
System.out.println(sum);
3、计算 5 的阶乘
int num = 1;
int ret = 1;
while(num <= 5){ret *= num;num += 1;
}
System.out.println(ret);
4、计算 1! + 2! + 3! + 4! + 5!
int num = 1;
int sum = 0;
// 外层循环求阶乘的和
while(num <= 5){// 那内层循环求每一个数的阶乘int tmp = 1;int fac = 1;while(tmp <= num){fac *= tmp;tmp += 1;}sum += fac;num += 1;
}
// 最后输出结果
System.out.println(sum);
语法格式如下,注意最后 while 后面要加个分号
do{循环语句;
}while(循环条件);
do while 不论条件成立与否,必定先执行一次循环语句,再判定循环条件:

语法格式如下:
for(初始语句; 循环条件; 更新语句) {循环体;
}
相比于 while 循环,for 循环将初始语句、循环条件 和 更新语句合并在一起,这样写代码时不容易遗漏。
注意事项
代码示例
1、打印 1 - 10 的数字
for(int i = 0; i <= 10; ++i) {System.out.println(i);
}
2、计算 1 - 100 的和
int sum = 0;
for(int i = 0; i <= 100; ++i) {sum += i;
}
System.out.println(sum);
3、计算 5 的阶乘
int ret = 1;
for(int i = 1; i <= 5; ++i){ret *= i;
}
System.out.println(ret);
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);
break:执行此语句时,退出匹配最近的循环。
continue:执行此语句时,会立刻进入下次循环(判定循环条件)。
注意:break 和 continue 都必须用在循环中【特殊:beak 还可以用在 switch 中】,二者不适用于 if 语句。
Java 中常用输出语句有以下三种形式:
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.println(msg);// 输出一个字符串, 带换行
System.out.printf(format, msg);// 格式化输出
说明:
我们在做 OJ 时经常要用到从键盘输入 n 组数据,模板大致如下:

注意事项