逻辑控制
1.顺序结构
按照代码书写的结构运行
2.分支结构
2.1if语句
- if(布尔表达式){
//条件满足时执行代码 }else{
//条件不满足时执行代码
} - if(布尔表达式){
//条件满足时执行代码 }else if(布尔表达式){
//条件满足时执行代码 }else{
//条件都不满足时执行代码
}
判定某一年份是否是闰年
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("是闰年");
}
if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配.
2.2switch语句
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
…
default:{
内容都不满足时执行语句;
[break;
}
}
根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句.
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.
一个 switch 语句最好都要带上 default.
注意事项:
1.break不要遗漏
2.switch(整数|枚举|字符|字符串)
3.注意事项3 switch 不能表达复杂的条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {
System.out.println(“hehe”);
}
注意事项4 switch 虽然支持嵌套, 但是很丑~
3.循环结构
3.1while
while(循环条件){
循环语句;
}
循环条件为 true, 则执行循环语句; 否则结束循环
3.2break
break 的功能是让循环提前结束.
3.3continue
continue 的功能是跳过这次循环, 立即进入下次循环.
3.4for
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量.
相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏.
4.输入输出
4.1输出到控制台
- println 输出的内容自带 \n
- print 不带 \n
- printf 的格式化输出方式和 C 语言的 printf 是基本一致的
4.2从键盘输入
使用 Scanner 读取字符串/整数/浮点数
- nextInt( ):只读取整数数值,并在读取输入后把光标留在本行
- nex( ):读取输入直到遇见空格。此方法不能读取被空格分隔开的内容,并在读取输入后把光标留在本行。
- netLine( ):读取包括空格在内的输入,而且还会读取行尾的换行符/n,读取完成后光标内被放在下一行
使用 Scanner 循环读取 N 个数字
Scanner sc = new Scanner(System.in);
double sum = 0.0;
int num = 0;
while (sc.hasNextDouble()) {
double tmp = sc.nextDouble();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
// 执行结果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1
注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d).
void close() 关闭此扫描仪。
boolean hasNext()
boolean hasNextLine()方法判断当前是否有输入,当键盘有输入后执行循环