zoukankan      html  css  js  c++  java
  • 零基础学习java------day4------流程控制结构

    1. 顺序结构

    代码从上往下依次执行

    2. 选择结构

    也叫分支结构,其会根据执行的结果选择不同的代码执行,有以下两种形式:

      if  语句

      switch  语句

    2.1 if 语句

    2.1.1  if语句的第一种形式

    格式:

    if(关系表达式){
            语句体;
    }
    执行流程:
                首先判断关系表达式看其结果是true还是false
                如果是true就执行语句体
                如果是false就不执行语句体  

     案例

     1 package com._51doit.javase.day04;
     2 
     3 import java.util.Scanner;
     4 
     5 public class ifDemo1 {
     6     public static void main(String[] args) {
     7         Scanner sc = new Scanner(System.in);
     8         System.out.println("请输入第一个整数:");
     9         int a = sc.nextInt();
    10         if(a > 3) {
    11             System.out.println("哈哈");
    12             
    13         }
    14         System.out.print("嘿嘿");
    15     }
    16     
    17
    18 }

    执行结果:

    if 语句的注意事项

       if 语句中的大括号是可以省略的,一旦省略,只控制到第一条语句结束(只到第一个分号为止)

       我们在开发的时候,千万别这样写,出问题的话,很难debug

     例如:代码如下

    package com._51doit.javase.day04;
    
    public class IfDemoTest {
        public static void main(String[] args) {
            if(3==4)
                System.out.println("哈哈");
                System.out.println("呵呵");
        }
    }

    上述代码运行结果为      呵呵

     解释:if只能控制到第一条语句结束(即if后的第一个分号为止)

     若将if( 3==4) 改成 if(3==4); 加了个分号,运行的结果为  哈哈   呵呵

     分号“;”相当于{ ;}(其代表空语句,表示砂蜜豆没有)

    练习:

    从键盘录入两个整数,判断两个数据是否相等,
    如果是就输出:相等,
    不是,输出不相等
    1. 使用if 语句完成
    2. 使用一条if 语句完成

    public class IfTest {
        public static void main(String[] args) {
            //1. 从键盘录入两个整数
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第一个整数");
            int a = sc.nextInt();
            System.out.println("请输入第二个整数");
            int b = sc.nextInt();
            //2. 使用if语句做判断
            /*if(a == b) {
            System.out.println("相等");
            }
            if(a != b) {
            System.out.println("不相等");
            }*/
            //使用一条语句实现
            String re ="相等";
            if(a!=b) {
                re = "不相等";
            }
            System.out.println(re);
            }
    }

    2.1.2  if语句的第二种形式

    格式

    if(关系表达式) {
                  语句体1;
    }else {
                  语句体2;
    }
    执行流程 
    首先判断关系表达式看其结果是true 还是false
         如果是true 就执行语句体1
    如果是false 就执行语句体2

     案例:

    /**
     键盘录入一个整数,判断数据是奇数还是偶数
     */
    
    package com._51doit.javase.day04;
    
    import java.util.Scanner;
    
    public class IfDemo2 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个数据");
            int a = sc.nextInt();
            if(a%2==0) {
                System.out.println("偶数");
            }else {
                System.out.println("奇数");
            }
        }
    }

    2.1.3  if语句的第三种形式

    格式

    if(关系表达式1) {
                    语句体1;
    }else if (关系表达式2) {
                    语句体2;
    }
            …
    else {
                    语句体n+1;
    }
    流程:
    首先判断关系表达式1 看其结果是true 还是false
    如果是true 就执行语句体1
    如果是false 就继续判断关系表达式2 看其结果是true 还是false 
    如果是true 就执行语句体2
    如果是false 就继续判断关系表达式…看其结果是true 还是false
    如果没有任何关系表达式为true,就执行语句体n+1。

    案例

    public class IfDemo4 {
        //从键盘录入一个整数,判断是正数,负数,还是0
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int a = sc.nextInt();
            if(a>0) {
                System.out.println("正数");
            }else if(a==0) {
                System.out.println("是0");
            }else {
                System.out.println("负数");
            }
        }
    }        

     练习

    1. 键盘录入x 的值,计算出y 的并输出。
    x>=3         y = 2x + 1;
    -1<=x<1    y = 2x;

     x<-1          y = 2x – 1;

     代码如下:

     1 package com._51doit.javase.day04;
     2 import java.util.Scanner;
     3 public class IfTest2 {
     4     public static void main(String[] args) {
     5         Scanner sc = new Scanner(System.in);
     6         System.out.println("请输入x的值");
     7         int x = sc.nextInt();
     8         if(x>=3) {
     9             System.out.println("y="+(2*x+1));
    10         }else if(x<1&x>=-1) {
    11             System.out.println("y="+2*x);            
    12         }else if(x<-1) {
    13             System.out.println("y="+(2*x-1));
    14         }else {
    15             System.out.println("x不合法");
    16         }        
    17     }
    18 }

    2.2  switch语句

     格式

    switch(表达式){
    case 常量值1:
        语句体1;
        break;
    case 常量值2:  
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
    }
    

     执行流程:

    1. 首先计算出表达式的值

    2. 其次,和case做比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束,否则一直往下进行

    3. 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

    表达式的类型

     byte,short,int, char, 枚举   jdk7以后(新加):String

    案例:

    根据键盘录入的数值1,2,3,.....7  输出对应的星期一,星期二,。。。星期日

    package com._51doit.javase.day04;
    
    import java.util.Scanner;
    
    public class SwithDemo {
        public static void main(String[] args) {
            // 输入1-7中的一个数,分别代表周一到周日
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个整数");
            int day = sc.nextInt();
            switch(day) {
            case 1:
                System.out.println("Monday");
                break;
            case 2:
                System.out.println("Tuesday");
                break;
            case 3:
                System.out.println("Wednesday");
                break;
            case 4:
                System.out.println("Thursday");
                break;
            case 5:
                System.out.println("Friday");
                break;
            case 6:
                System.out.println("Saturday");
                break;
            case 7:
                System.out.println("Sunday");
                break;
            default:
                System.out.println("Are you kidding?");
            }    
        }
    }

    注意事项:

    1. case后面只能跟常量,不能跟变量

    2. 多个case后面的常量值不能相同

    3. case的顺序没有要求,可以放到任意位置

    4. default也可以放在任意位置

    5. default可以不要

    6.break可以省略,如果省略的话,代码会继续向下执行,不管下面的case是否匹配成功,一直执行到再次遇到break,或者是执行到了switch语句结束

    如若将所有break不写上面代码运行结果会变成如下,当输入1时:1的结果连同其后面的结果都会打印出来,当输入2时,21的结果连同其后面的结果都会打印出来(1的不会)

    7 switch语句何时结束:遇到break,或者代码执行到了switch语句的最后

    3. 循环结构

    让一段代码反复执行很多次

    3.1 for 循环

    for(初始化语句;判断条件语句;控制条件语句) {
        循环体语句体;
    }

    执行流程:

    (1)执行初始化语句

    (2)执行判断条件语句,看其结果是true还是false,如果是false,循环结束

    (3)执行循环体语句

    (4)执行控制条件语句

    (5)回到(2)继续

    案例:

    1  打印100句话

    package com._51doit.javase.day04;
    // 打印100句话
    public class ForDemo{
        public static void main(String[] args) {
            for(int i=1;i<100;i++) {
                System.out.println("学大数据的我");
            }
        }
    }

    2. 求1-100奇数和偶数和

    package com._51doit.javase.day04;
    
    public class ForDemo{
        public static void main(String[] args) {
            int oldNumberCount = 0;
            int evenNumberCount = 0;
            for(int i=1;i<=100;i++) {
                if(i%2==0) {
                    evenNumberCount += i;
                }else {
                    oldNumberCount += i;
                }
            }
            System.out.println("1-100中的偶数和为"+evenNumberCount);
            System.out.println("1-100中的奇数和为"+oldNumberCount);

    3. 请统计1-1000之间分别满足如下条件的数据有多少

        对3整除余2;对5整除余3;对7整除余2;

    /*
     请统计1-1000之间分别满足如下条件的数据有多少个
    
        对3整除余2;对5整除余3;对7整除余2;
     **/
    
    package com._51doit.javase.day04.loop;
    
    public class ForTest {
        public static void main(String[] args) {
            int a=0;
            int b=0;
            int c=0;
            for(int i=1; i<=1000; i++) {
                if(i%3 == 2) {
                    a += 1;
                }
                if(i%5 ==3 ) {
                    b += 1;
                }
                if(i%7 == 2) {
                    c += 1;
                }    
            }
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
        }
    }

    注意,此处不能用else if(要用if),因为else if只要满足条件,后面的代码就不会运行了,但有些数据可能既满足条件1也满足条件2或3,这样就会漏算

     3.2 while循环

     格式:

     初始化语句;
     while(判断条件语句) {
         循环体语句体;
         控制条件语句;
     }

    案例

    1. 打印1-100的数

    package com._51doit.javase.day04.loop;
    
    public class WhileDemo {
        public static void main(String[] args) {
            int i = 1;
            while(i <= 100) {
                System.out.println(i);
                i++;
            }
        }
    }

    2. 一座山峰的高度为8848m,加入有一张足够大的纸,厚度为0.01m,请问需要折多少次才能保证纸的厚度不低于山峰的高度

    /*
     一座山峰的高度为8848m,加入有一张足够大的纸,厚度为0.01m,请问需要折多少次才能保
     证纸的厚度不低于山峰的高度
     **/
    
    package com._51doit.javase.day04.loop;
    
    public class WhileDemo2 {
        public static void main(String[] args) {
            double hight = 0.01;
            int num = 0;
            while(hight < 8848) {
                hight *=2;
                num++;
            }
            System.out.println(num);
        }
    }

    两种循环的对比:

         for 循环适合针对一个范围判断进行操作

         while 循环适合不知道循环的次数,或者要求循环的次数

       

  • 相关阅读:
    mq概念
    Mac Xampp 安装redis 及 安装php-redis扩展
    rabbitmq死信队列(延迟队列)demo
    rabbitmq生产与消费测试
    RabbitMQ各方法详解
    Mac git old mode 100644 new mode 100755 mac目录权限问题
    mac安装redis
    msql创建用户并授权
    mac apache php 访问失败
    Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube
  • 原文地址:https://www.cnblogs.com/jj1106/p/11294293.html
Copyright © 2011-2022 走看看