Java流程控制
一、用户交互Scanner
Scanner类
java.util.Scanner是JDK5的新特性,可以通过Scanner类来获取用户的输入。
- 基本语法
Scanner s = new Scanner(System.in);
- 通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串。
在读取之前如需判断,使用 hasNext() 与 hasNextLine() 来判断是否还有输入的数据。
此外,可以使用 nextInt()、nextDouble() 等方法获取指定类型的输入数据
- next()
- 读取到有效字符后才可以结束输入;
- 有效字符之前的空格,会自动去掉;
- 输入有效字符后的空格作为分隔符或结束符;
- 不能得到带有空格的字符串
- nextLine()
以 Enter 为结束符,返回的是输入回车之前所有的字符,包括空格
- 最后一定要调用 close() 方法关闭IO流
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
System.out.println("请输入数据:");
// 从键盘接收数据
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println("输入的内容为:" + str);
// 凡是属于IO流的类,如果不关闭会一直占用资源,用完就关闭,防止占用资源
scanner.close();
}
}
二、顺序结构
- Java的基本结构就是顺序结构,除非指定,否则程序会按照顺序逐句执行。
- 顺序结构是最简单的算法结构。
- 语句之间、代码块之间是按照从上到下的顺序进行的,是由若干个依次执行的处理步骤组成的,
是任何一种算法都离不开的一种基本算法结构!
三、选择结构
1. if 单选泽结构
判断条件是否成立,再执行一段代码。
if(判断表达式) {
/*
需要执行的代码
*/
}
2. if 双选择结构
根据判断条件,程序有两条路可走。
if(判断表达式) {
// 表达式为真执行的代码
} else {
// 表达式为假执行的代码
}
3. if 多选择结构
程序的运行有多种可能。
if(判断表达式1) {
} else if(判断表达式2) {
} else if(判断表达式3) {
} ... {
} else {
}
4. 嵌套的 if 结构
在一个 if 里面嵌套另一个 if。
if(判断表达式1) {
if(判断表达式2) {
}
}
5. switch 多选择结构
多选择结构除了使用 if—else if—else,还可以使用 switch case 语句。
该语句判断一个变量与一系列值中的某个值是否相等,来实现程序不同的分支。
switch 语句的变量类型可以是:
- byte、short、int、char
- 从 JDK1.7 开始,支持 String 类型,本质还是数字
- 同时 case 标签必须为字符串常量或字面量。
// 匹配一个具体的值
switch(表达式) {
case value:
// 执行代码
break; // 可选,不写的话会往下执行,case穿透
case value:
// 执行代码
break;
// 任意数量的case语句
default: // 可选
// 执行代码
}
四、循环结构
1. while
while(表达式) {
// 循环执行的代码
}
- 只要表达式为真,循环就会一直执行。
- 如果表达式不成立,循环体不会被执行
- 绝大多数情况下要让循环停止,所以需要一个方式让表达式为假
- 少数情况下需要循环一直执行,比如聊天服务器的定时循环监听等。
- 在实际的业务开发过程中,应该避免产生死循环!!!
2. do-while
do {
// 循环执行的代码
} while(表达式);
while 和 do-while 的区别
- while 先判断后执行,do-while 先执行后判断
- do-while 总是保证循环体至少被执行一次!这是主要差别。
3. for
for(初始化; 布尔表达式; 变量更新) {
// 循环执行的代码
}
// 死循环
for(;;) {
// 循环体
}
- for 循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构
- for 循环的执行次数在循环开始之前就已经确定了。
4. 增强 for 循环
JDK5 引入,数组、集合的遍历重点使用。
for(声明语句: 表达式) {
// 代码
}
- 声明语句:声明新的局部变量,变量的类型必须和数组元素的类型匹配,作用域限定在循环语句块,值与数组元素的值相等。
- 表达式:要访问的数组名,或者是返回值为数组的方法。
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50}; // 定义了一个数组
for(int x: numbers) {
System.out.println(x); // 依次输出数组中的所有元素
}
}
五、break&continue
1. break
- 在任何循环语句的主体部分,都可以使用 break 控制循环的流程。
- break 用于强制退出循环,不再执行循环体中剩余的语句。
- break 语句也可用在 switch 语句中。
2. continue
- 在循环语句中使用,用于终止某一次循环。
- 跳过循环体中剩余未执行的代码,立即进行是否进行下一次循环的判定。