条件分支语句
ava
语言提供了两种判断语句:
if
语句和
switch
语句。这两种语句用于实现判断,当符合某些条件时执行
某段代码,否则将不执行
语法
if(
条件判断语句
){
代码
A;}
当条件成立时执行代码
A
,如果条件不成立则不执行代码
A
,而是直接
执行
if
的下一句
if(
条件
){
代码块
1;}else{
代码块
2;}
当条件成立时执行代码块
1
,如果条件不成立则执行代码块
2
。没
有一种情况是同时执行代码块
1
和
2
if(
条件
1){
代码块
1;}else if(
条件
2){
代码块
2;}...else{
代码块
n;}
当条件
1
成立时执行代码块
1
,如果条
件
1
不成立继续判断条件
2
,如果条件
2
成立则执行代码块
2,
依次类推。没有一种情况是同时执行代
码块
1
和
2
说明:允许多个
if
之间进行相互嵌套
Scanner sc
=
new
Scanner
(
System
.
in
);
int
score
=
sc
.
nextInt
();
if
(
score
>=
85
) {
//
这里的顺序不能调整,因为条件成立后则立即执行代码块,执行结束则自动跳出
if
,不会继续判断
System
.
out
.
println
(
"
成绩优秀
"
);
}
else if
(
score
>=
70
) {
System
.
out
.
println
(
"
成绩良好
"
);
}
else if
(
score
>=
60
){
System
.
out
.
println
(
"
成绩及格
"
);
}
else
{
System
.
out
.
println
(
"
成绩不及格
"
);
}
开关分支语言
switch
语法:
switch(
表达式
){
case
值
1
:
判断表达式的值是否在值
1
,如果相等则执行代码块
1
代码块
1
;
break;
执行完成后,如果没有
break
,则自动执行后续语句,但是不进行判
定。如果有
break
则立即中断
switch
的执行,跳到
switch
块的下一局继续执行
多个
case
语句
:
... ...
default:
如果所有的
case
都不能成立,则执行代码块
n
代码块
n; break;
}
语法点:
表达式的计算结果可以是整型【不允许
long
类型】
,
可以是
char
,同时允许是字串类型
[String]
也可以是枚举类型
case
值类型必须和
switch
条件类型相同或者能隐式转换为
switch
表达式类型
case
值必须唯一,不能与其它的重复
default
的位置没有特殊要求,但是一定是所有的
case
值不相等时才会执行。但是为了增强可读
性,所以一般建议写在所有的
case
之后
举例
需求:输入月份,显示对应的本月的天数
System
.
out
.
println
(
"
请输入月份
:"
);
Scanner sc
=
new
Scanner
(
System
.
in
);
int
m
=
sc
.
nextInt
();
switch
(
m
) {
case
1
:
case
3
:
case
5
:
case
7
:
case
8
:
case
10
:
case
12
:
System
.
out
.
println
(
"
本月
31
天
"
);
break
;
case
2
:
System
.
out
.
println
(
"
请输入年份
:"
);
int
year
=
sc
.
nextInt
();
if
((
year
%
4
==
0
&&
year
%
100
!=
0
)
||
year
%
400
==
0
) {
System
.
out
.
println
(
"
本月
29
天
"
);
}
else
System
.
out
.
println
(
"
本月
28
天
"
);
break
;
case
4
:
case
6
:
case
9
:
case
11
:
System
.
out
.
println
(
"
本月
30
天
"
);
break
;
default
:
//default
写在
switch
内部的任何位置上实际都不会影响执行逻辑,但是不建议,
因为会影响可读性
System
.
out
.
println
(
"
月份错误
!"
);
break
;
}
}
}
三目运算符
三目条件运算符(?:)规则是完全一致的,使用的形式是:
x ? y
:
z;
需求:要求输入两个整数,输出最大的整数
使用
if
判断的实现方式:
Scanner sc
=
new
Scanner
(
System
.
in
);
System
.
out
.
println
(
"
请输入第一个整数
:"
);
int
num1
=
sc
.
nextInt
();
System
.
out
.
println
(
"
请输入第二个整数
:"
);
int
num2
=
sc
.
nextInt
();
int
max
=
num1
>
num2
?
num1
:
num2
;
System
.
out
.
println
(
"
两个整数
("
+
num1
+
","
+
num2
+
")
中最大的值为
:"
+
max
);
sc
.
close
();
循环结构
循环就是重复做某一件事情。在
Java
程序中,循环控制即在某一情况下,控制程序重复执行某一条或多
条语句,直到遇到终止条件为止
循环语句也称迭代语句,在
Java
语言中存在的
while
、
for
和
do-while
循环语句
需求:计算
1+2+3+...+100=5050
while
循环
while
是
Java
中最基本的循环语句,满足条件才执行循环体,如果不满足条件则不执行。所以有可能循环
体一次都不执行。
语法:
while(
条件
){
循环体
;}
当条件成立时反复执行循环体,每执行一次判断一次条件。
nt
res
=
0
;
//
累加器,用于存放每次循环体的执行结果
int
k
=
1
;
//
控制循环次数
while
(
k
<
101
){
res
=
res
+
k
;
k
++
;
}
System
.
out
.
println
(
"1+2+3+...+100="
+
res
);
int
res
=
0
;
//
累加器,用于存放每次循环体的执行结果
int
k
=
0
;
//
控制循环次数
while
(
k
++ <
100
)
res
+=
k
;
System
.
out
.
println
(
"1+2+3+...+100="
+
res
);
int
res
=
0
;
//
累加器,用于存放每次循环体的执行结果
int
k
=
0
;
//
控制循环次数
while
(
++
k
<=
100
)
res
+=
k
;
System
.
out
.
println
(
"1+2+3+...+100="
+
res
);
int
res
=
0
;
//
累加器,用于存放每次循环体的执行结果
int
k
=
1
;
//
控制循环次数
while
(
true
){
//
这个写法一般用于没有很明确的次数控制时
res
+=
k
;
if
(
++
k
>
100
)
break
;
//
当满足条件则跳出
while
循环体
}
System
.
out
.
println
(
"1+2+3+...+100="
+
res
);
需求:计算所有
100
以内奇数的和
int
res
=
0
;
//
累加器
int
k
=
0
;
//
循环控制变量
while
(
++
k
<
101
){
if
(
k
%
2
==
1
)
res
+=
k
;
}
System
.
out
.
println
(
"1+3+5+...+99="
+
res
);
需求:计算所有100以内奇数的和
int
res
=
0
;
//
累加器
int
k
=
0
;
//
循环控制变量
while
(
++
k
<
101
){
if
(
k
%
2
==
1
)
res
+=
k
;
}
System
.
out
.
println
(
"1+3+5+...+99="
+
res
);
break
和
continue
的用法
int
res
=
0
;
int
k
=
0
;
while
(
true
){
if
(
++
k
>
100
){
break
;
//
跳出循环体,执行循环体后的语句
}
if
(
k
%
2
==
0
){
//
如果是偶数不进行累加操作,而是从新开始后续的循环,
continue
之后的语句不执
行,从头开始下次循环
continue
;
//
终止本次循环,立即进入下次循环
}
else
{
res
+=
k
;
//res=res+k
}
System
.
out
.
print
(
k
+
"+"
);
}
System
.
out
.
println
(
"="
+
res
);
break
和
continue
的区别:
break
是立即终止循环,进入循环结构的后续代码继续执行
,
循环体执行结束
continue
是终止本次循环,进入下次循环,循环并没有执行结束
do/while
循环
语法:
do{
循环体
;
}while(
条件
)
;
先执行循环体,然后进行条件判断,如果条件为
true
,则执行下次循环;如果
条件为
false
则终止循环。
不同于
while
循环的点:
do/while
循环至少执行循环体一次,而
while
循环有可能一次都不执行
int
res
=
0
;
int
k
=
1
;
do
{
res
+=
k
++
;
//res=res+k;k++;
}
while
(
k
<
101
);
System
.
out
.
println
(
res
);
for
循环
语法:
for(
表达式
1
;表达式
2
;表达式
3){
循环体
;}
执行表达式
1
执行表达式
2
,一般表达式
2
是一个条件,如果条件为
true
则执行循环体;如果条件为
false
则终止循
环
执行循环体
执行表达式
3
执行第
2
步骤
for
循环一般用于可以明确循环次数的场景中;
while
循环一般用于不能预先确定循环执行次数的场景
中;
do/while
循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
for
循环
语法:
for(
表达式
1
;表达式
2
;表达式
3){
循环体
;}
执行表达式
1
执行表达式
2
,一般表达式
2
是一个条件,如果条件为
true
则执行循环体;如果条件为
false
则终止循
环
执行循环体
执行表达式
3
执行第
2
步骤
for
循环一般用于可以明确循环次数的场景中;
while
循环一般用于不能预先确定循环执行次数的场景
中;
do/while
循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
int
res
=
0
;
for
(
int
i
=
1
;
i
<=
100
;
i
++
){
res
+=
i
;
}
System
.
out
.
println
(
res
);
int
k
=
1
;
for
(;
k
<
101
;
k
++
)
res
+=
k
;
int
k
=
1
;
for
(;
k
<
101
;)
res
+=
k
++
;
int
k
=
1
;
for
(;;) {
res
+=
k
++
;
if
(
k
>
100
)
break
;
}