JAVA流程控制

Scanner 顺序 选择 循环

java流程控制

用户交互Scanner

之前学的基本语法中我们并没有实现程序和人的交互,但是java给我们提供了这样一个工具类,我们可以获取用户的输入。

java.util.Scanner 通过Scanner类来获取用户的输入

1
Scanner s = new Scanner(System.in);

通过Scanner类的next() nextline() 获取输入的字符串

读取之前使用 hasNext() hasNextline() 判断是否还有输入的数据

1
2
3
4
5
next():
一定要读取到有效字符后才可以结束输入
对输入有效字符前的空白,next()方法会自动将其去掉
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
next()不能得到带有空白的字符串
1
2
3
nextline()
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
可以获得空白

顺序结构

1
2
3
4
java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
顺序结构是最简单的算法结构
从上到下的顺序进行的,若干个依次执行的处理步骤组成的
是任何一个算法都离不开的一种基本算法结构

选择结构

if单选择结构

1
2
3
if(布尔表达式){
//如果布尔表达式为true执行的语句
}

if双选择结构

1
2
3
4
5
if(布尔表达式){
//如果布尔表达式为true执行的语句
}else{
// 如果布尔表达式为false执行的语句
}

if多选择结构

1
2
3
4
5
6
7
8
9
if(布尔表达式 1){
// 如果布尔表达式 1为true执行的语句
}else if(布尔表达式 2){
//如果布尔表达式 2为true执行的语句
}else if(布尔表达式 3){
//如果布尔表达式 3为true执行的语句
}else{
//如果以上布尔表达式都为false执行的语句
}

嵌套的if结构

1
2
3
4
5
if(布尔表达式 1){
if(布尔表达式 2){

}
}

Swith多选择结构

判断一个变量与一系列值中的某个值是否相等,每一个值称为一个分支

1
2
3
4
5
6
7
8
9
10
11
12
13
switch(expression){ //case穿透现象
case value: //比对哈希值
//语句
break;//可选
case value:
//语句
break;//可选
default://可选
//语句
}

//value必须是字符串常量或字面量
//八大基本数据类型的比较 JDK7以后支持字符串的比较
1
反编译 java---class(字节码文件)---反编译(IDEA)

循环结构

while循环

先判断后执行

1
2
3
4
5
6
7
8
9
10
while(布尔表达式){
//循环内容
}
/*
注意事项
1.只要布尔表达式为true,循环就会一直执行下去
2.我们大多数情况会让循环停止下来的,我们需要一个表达式失效的方式来结束循环
3.少部分情况需要循环一直执行,比如服务器的请求响应监听等
4.循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环。会影响程序性能或造成程序卡死崩溃!
*/

do…while循环

有时我们需要即使不满足条件,也至少执行一次

先执行后判断

1
2
3
do{
//代码语句
}while(布尔表达式)

for循环

  • 支持迭代的一种通用结构,最有效、最灵活的循环结构
  • for循环执行的次数是在执行前就确定的
1
2
3
for(初始化;布尔表达式;更新){
//代码语句
}

注意:

  • 最先执行初始化步骤
  • 可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
  • 然后检测布尔表达式的值
  • 开始执行循环体后面的语句,再次检测布尔表达式。循环执行上面过程。
1
2
3
4
//死循环
for(;;){

}
1
2
println 输出完会换行
print 输出完不会换行

增强for循环

jdk5引入的,主要用于数组或集合的增强for循环

1
2
3
for(声明语句:表达式){

}

image-20260912210241332

break & continue

1
2
break 强制退出循环 不干了
continue 终止某次循环 跳过一些东西

image-20260912211151319

练习

打印三角形 5行


JAVA流程控制
http://lotus.github.io/2026/09/12/java流程控制/
作者
Lotus
发布于
2026年9月12日
许可协议