Java流程控制
一、Scanner类的使用
(一)基本使用
- next()
- 一定要读取到有效字符,才可以结束输入
- 对字符前的空白,会自动过滤
- 只有输入有效字符后,才将其后面输入的第一个空白作为分隔符或结束符
- next()不能得到带有空格的字符串
- nextLine()
- 以回车为结束符
- 可以获取空白
- 凡是IO流的类如果不关闭会一直占用资源,要养成良好习惯,用完就关
//示例01
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("next()方法接收");
//判断用户有没有输入,视情况添加判断
if (scanner.hasNext()){
String str1 = scanner.next(); //hello world
System.out.println("输入的是:" + str1); //hello
}
System.out.println("nextLine()方法接收");
//判断用户有没有输入,视情况添加判断
if (scanner.hasNextLine()){
String str2 = scanner.nextLine();//hello world
System.out.println("输入的是:" + str2);//hello world
}
//凡是IO流的类如果不关闭会一直占用资源,要养成良好习惯,用完就关
scanner.close();
}
}
(二)进阶使用
- 控制输入的数据
- hasNextInt()
- hasNextFloat()
- hasNextDouble()
- …
//示例02
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = 0;
System.out.println("请输入整数");
if (scanner.hasNextInt()){
a = scanner.nextInt();
System.out.println(a);
}
}
}
二、顺序结构
没什么好说的,一步步往下执行。
三、if语句
(一)if单选择结构
if(布尔表达式){
//TODO
}
(二)if双选择结构
if(布尔表达式){
//TODO
} else {
//TODO
}
(三)if多选择结构
if(布尔表达式) {
//TODO
} else if (布尔表达式) {
//TODO
} else if (布尔表达式) {
//TODO
} else if (布尔表达式) {
//TODO
...
} else {
//TODO
}
(四)if多重嵌套
if(布尔表达式){
if(布尔表达式){
//TODO
}
//TODO
} else {
if(布尔表达式){
//TODO
} else {
//TODO
}
}
四、switch选择结构
//变量类型可选值
//byte,short,int,char
//从java7开始支持String
//case必须为字符串常量或字面量
switch(expression){
case value:
//TODO
break;//可选
case value:
//TODO
break;
default://可选
//TODO
}
(一)break
- 当匹配到对应的case后,执行当前case语句,就跳出switch。
- 如果当前case不写break,就会继续往下执行其他case直到结束。
(二)default
- 可选,匹配不到值的时候默认执行的语句
五、循环结构
(一)while
- while是最基本的循环
while(布尔表达式){
//循环内容
}
- 只要表达式为真,就一直循环
- 需要一个使表达式为假去结束循环
- 少部分需要一直循环,比如服务器的请求响应监听等
- 业务中要避免死循环,会影响性能导致程序崩溃卡死
(二)do…while
- 即使不满足,也执行一次循环
do{
//循环体
} while(布尔表达式);//分号结尾
(三)for
1.普通循环
- 是支持迭代的一种通用结构,是最有效、最灵活的循环结构
- 执行次数事先定义好了。语法如下:
for(初始化;布尔表达式;迭代){
//循环体
}
- idea快捷键输入for循环:100.for
- 打印九九乘法表
public class ForDemo {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) { //j <= i 限定每行循环次数
System.out.print(i + "*" + j + "=" + i * j + "\t");// \t 制表符,打印空隙
}
System.out.println("");//换行
}
}
}
/* 方法:
1.先打印一行
2.在打印九行九列
3.去掉多余项目
4.调整样式
*/
/* 输出结果
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
- 打印正三角形
public class ForDemo02 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println(" ");
}
}
}
2.增强for循环
- 语法格式
for(声明语句:表达式){
//循环体
}
- 主要用于数组和集合
public class ForDemo {
public static void main(String[] args) {
int[] numbers = {1,2,3,4,5};
//遍历数组
for(int x:numbers){
System.out.println(x);
}
}
}
//输出
1
2
3
4
5