Day05 Java基础--流程控制

Day05 Java流程控制

1. Scanner对象

  • 基本语法:

    Scanner s = new SCanner(Sys.in); 
    
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取钱我们一般使用hasNext()与hasNextLine()判断是否好友输出的数据。

  • next()

    • 1.一定要读取到有效字符后才可以结束输入。
    • 2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    • 3.只有输入有效字符后才将其后面输入的空白作呕为凤戈夫或结束符。
    • 4.next()不能得到带有空格的字符串
  • nexyLine()

    • 1.以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
    • 2.可以获得空白。
        //创建一个扫描器对象,用于接收键盘数据

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据:");

        //判断用户有没有输入字符串
        
         String str = scanner.nextLine();  //程序会等待用户输入
         System.out.println("输出的内容为:"+str);
        

        //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯用完就关闭
        scanner.close();

实践题:我们可以输入多个数字,并求其综合与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果

		

		Scanner scanner = new Scanner(System.in);

        //和
        double sum= 0;
        //计算输入了多少个数字
        int m = 0;

        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while(scanner.hasNextDouble()){

            double x = scanner.nextDouble();
            m = m+1; //m++

            sum = sum + x;
            System.out.println("你输入了第"+m+"个数据,当前结果为"+sum);

        }

        System.out.println(m+"个数的和为"+sum);
        System.out.println(m+"个数的平均值是"+(sum /m));

        scanner.close();

2. 顺序结构

  • JAVA的基本结构就是顺序结构,按顺序执行。

  • 顺序结构是最简单的算法结构。

    image

  • 语句与语句之间,框与框之间按从上到下的顺序进行的,他是有若干个依次执行的处理步骤组成的,他是任何一个算法都离不开的一种基本结构。

3. 选择结构

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构

if单选择结构

  • 我们很多时候需要去判单一个东西是可行,然后我们才执行。这样的一个过程在程序中用if语句来表示

  • 语法:

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

if双选择结构

  • 语法

    if(布尔表达式){
        //如果布尔表达式为true将执行的语句
    }else {
        //如果布尔表达式不为true将执行的语句
    }
    

if多选择结构

  • 语法

    if(布尔表达式1){
        //如果布尔表达式为true将执行的语句
    }else if(布尔表达式2){
        //如果布尔表达式为true将执行的语句
    }else if(布尔表达式3){
        //如果布尔表达式为true将执行的语句
    }else {
        //如果以上布尔表达式都不为true将执行的语句
    }
    

嵌套的if结构

  • 所有的逻辑结构都可以相互嵌套

  • 语法:

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

Switch多项选择结构

  • 多选择结构还有一个实方式就是switch case 语句

  • switch case 语句判断一个变量与一系列值中的某个值是狗相等,每个值称为一个分支

  • switch 语句中的变量类型可以是:

    • byte, short, int, char
    • 从JavaSE 7 开始
    • switch 支持字符串 String 类型
    • 同时case 标签必须为字符串常量或字面量.
  • 语法:

    switch(expression){
        case value:
            //语句
            break; //可选
        case value:
            //语句
            break; //可选
        //你可以有任何数量的case语句
        default://可选
            //语句
    }
    

4. 循环结构

  • while 循环
  • do...while 循环
  • for 循环
  • 在Java5中引入了一种用于数组的增强型for 循环

while循环

  • while 是最基本的循环:

    while(布尔表达式){
        //循环结构
    }
    
  • 只要布尔表达式为true,循环就会一直执行下去

  • 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。

  • 少部分情况循环会一直执行,比如服务器的请求响应监听等

  • 我们应该尽量避免死循环的出现

    		int i = 0;
            int sum = 0;
            while (i <= 100){
                sum = sum + i;
                i++;
    
            }
            System.out.println(sum);
    

do...while 循环

  • 对于while 语句而言,如果不满足条件,则不能进入循环。但是有时候我们需要及时不满足条件,也至少执行一次。

  • do...while 循环和 while 循环相似,不同的是,do...while循环至少会执行一次。

    do{
        //代码语句
    }while(布尔表达式)
       
    
  • while 和do...while的区别

    • while 先判断后执行。do..while 是先执行后判断
    • do..while 总是保证循环体见被至少执行一次!
            int i = 0;
            int sum = 0;
            do{
                sum = sum + i;
                i++;
            }while(i <= 100);
            System.out.println(sum);
    

for 循环

  • 虽然所有循环都可以用while或者do...while 表示,但是for循环可以让结构变得更加简单。

  • for循环语句是支持迭代的一种通用结构,是最有效|最灵活的循环结构。

  • for循环的执行此时实在执行前就确定的。格式如下:

    for(初始化;布尔表达式;更新){
        //代码语句
    }
    
  • 练习1:计算0到100直接技术和偶数的和

            //练习1:计算0到100直接技术和偶数的和
    
            int oddSum = 0;
            int evenSum = 0;
    
            for (int i = 0; i <= 100; i++) {
                if(i % 2 != 0 ){
                    oddSum+=i;
                }else {
                    evenSum+=i;
                }
            }
            System.out.println("奇数的和:"+oddSum);
            System.out.println("偶数的和:"+evenSum);
    
    
  • 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个

            //练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个
    
            for (int i = 0; i < 1000; i++) {
                if (i%5 == 0){
                    System.out.print(i + "\t");
                }
                if (i%(5*3)==0){//每行
                    System.out.println();
    //                System.out.print("\n");
                }
            }
            //println 输出换行
            //print 输出不换行
    
  • 练习3:打印九九乘法表

            //练习3:打印九九乘法表
    
            //1.我哦们先打印第一列
            //2.把固定的1再用一个循环包起来
            //3.去掉重复项, j <= i
    
            for (int i = 1; i <= 9; i++) {
                for (int j = 1; j <= i; j++) {
                    System.out.print(j+"*"+i+"="+(i*j)+"\t");
                }
                System.out.println();
            }
    
    

增强for循环

  • 数组重点使用

  • Java5 引入了一种用于数组或集合的增强型for 循环

  • 语法:

    for(声明语句 : 表达式){
        //代码句子
    }
    
  • 声明语句:声明心得局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时的数组元素的值相等。

  • 表达式:表达式是要访问的数组名,或者返回值为数组的方法。

break continue

  • break在任何循环语句的主题部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue 语句用循环语句体中,用于中止某次循环过程,即跳过循环体中尚未执行的语接着进行下一次是否执行循环的判断

例题:打印一个三角形

 		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();
        }

结果:

image

posted @ 2021-08-27 21:41  宅虎  阅读(35)  评论(0)    收藏  举报