顺序结构比较简单. 像我们之前写过的代码就是顺序结构的, 按照代码书写的顺序一行一行执行
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 运行结果
aaa
bbb
ccc
如果调整代码的书写顺序, 则执行顺序也发生变化
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
// 运行结果
aaa
ccc
bbb
基本语法形式1:
if(布尔表达式){
//条件满足时执行代码
}
如果布尔表达式结果为true,执行if中的语句,否则不执行。
基本语法形式2:
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。
基本语法形式3: 多分支的情况
if(布尔表达式1){
//条件满足时执行代码
}else if(布尔表达式2){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3
注意:
if-else语句如果不加大括号{},则只能写一条语句,且else与最近的if匹配。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的分数:>");
int score = scanner.nextInt();
if(score >= 90){
System.out.println("优秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >= 70 && score < 80){
System.out.println("中等");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("错误数据");
}
}
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
// 四年一闰,百年不闰,四百年再闰
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println("闰年");
} else {
System.out.println("不是闰年");
}
scanner.close();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:>");
int num = scanner.nextInt();
if (num % 2 != 0) {
System.out.println("奇数");
} else {
System.out.println("偶数");
}
}
基本语法:
switch (整数 | 枚举 | 字符 | 字符串) {
case 内容1: {
内容满足时执行语句;
[break;]
}
case 内容2: {
内容满足时执行语句;
[break;]
}
...
default: {
内容都不满足时执行语句;
[break;]
}
}
执行流程:
注意:
int day = 1;
switch(day) {
case 1:
System.out.println("星期一");
// break;
case 2:
System.out.println("星期二");
break;
}
// 运行结果
星期一
星期二
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {
System.out.println("hehe");
}
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;
}
基本语法格式:
while (循环条件) {
循环语句;
}
循环条件为 true,则执行循环语句;否则结束循环。
public static void main(String[] args) {
int i = 1;
int ret = 1;
while (i <= 5) {
ret *= i;
i++;
}
System.out.println(ret);
}
int i = 1;
int ret = 1;
int sum = 0;
while (i <= 5) {
ret *= i;
i++;
sum += ret;
}
System.out.println(sum);
break 的功能是让循环提前结束。
for (int i = 100; i < 200; i++) {
if (i%3==0) {
System.out.println(i);
break;
}
}
continue 的功能是跳过这次循环, 立即进入下次循环。
int num = 100;
int count = 0;
while (num <= 200) {
if (num % 3 == 0) {
num++;
continue;
}
System.out.println(num);
count++;
num++;
}
System.out.println("共" + count + "个");
【基本语法】:
for(表达式1; 布尔表达式2; 表达式3){
表达式4;
}
【执行过程】:
①②④③—>②④③—>②④③—>②④③—>②④③—>②④③—>…—>②为false,循环结束。
【基本语法】:
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。
注意:
1. do while 循环最后的分号不要忘记
2. 一般 do while 很少用到, 更推荐使用 for 和 while
【基本语法】:
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
格式化字符串:
转换符 | 类型 | 举例 | |
---|---|---|---|
d | 十进制整数 | (“%d”, 100) | 100 |
x | 十六进制整数 | (“%x”, 100) | 64 |
o | 八进制整数 | (“%o”, 100) | 144 |
f | 定点浮点数 | (“%f”, 100f) | 100.000000 |
e | 指数浮点数 | (“%e”, 100f) | 1.000000e+02 |
g | 通用浮点数 | (“%g”, 100f) | 100.000 |
a | 十六进制浮点数 | (“%a”, 100) | 0x1.9p6 |
s | 字符串 | (“%s”, 100) | 100 |
c | 字符 | (“%c”, ‘1’) | 1 |
b | 布尔值 | (“%b”, 100) | true |
h | 散列码 | (“%h”, 100) | 64 |
% | 百分号 | (“%.2f%%”, 2/7f) | 0.29% |
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:>");
String name = scanner.next();
System.out.println("请输入你的年龄:>");
int age = scanner.nextInt();
System.out.println("请输入你的薪资:>");
float salary = scanner.nextFloat();
System.out.println("姓名:" + name + ",年龄:" + age + ",薪资:" + salary);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int randNum = random.nextInt(101); // [0,101)
while (true) {
System.out.println("请输入你要猜的数字:");
int num = scanner.nextInt();
if (num < randNum) {
System.out.println("猜小了");
} else if (num == randNum) {
System.out.println("猜对了");
break;
} else {
System.out.println("猜大了");
}
}
}