Java流程控制

一、Scanner类的使用

(一)基本使用

  1. next()
  • 一定要读取到有效字符,才可以结束输入
  • 对字符前的空白,会自动过滤
  • 只有输入有效字符后,才将其后面输入的第一个空白作为分隔符或结束符
  • next()不能得到带有空格的字符串
  1. nextLine()
  • 以回车为结束符
  • 可以获取空白
  1. 凡是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();
    }
}

(二)进阶使用

  1. 控制输入的数据
  • 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