• JAVA笔记整理-流程控制-循环


    java# 一、流程控制

    1、定义

     在一个Java程序中,各条语句的执行对程序的结果有直接影响,也就是说  各个语句的执行顺序对程序的结果有直接影响。
    
     在程序中 ,可能出现不同的执行顺序,必须 自上而下顺序执行,或者 条件判断的顺序或者循环执行的顺序。
    

    2、分类

            顺序执行
    
            条件分支   
    
          循环执行 
    

    3、顺序执行

     //顺序执行, 从上而下执行 
    public static void main(String [] args){
          System.out.println(1);
           System.out.println(2);
            System.out.println(3);
     }
    

    4、条件分支

    1、if条件分支

      语法:
    
    if(条件){
        语句块
    }
    其他代码
    

    解释: 如果条件成立 ,则执行语句块 ,如果条件不成立,则不执行其他语句块

       // 生成一个100以内的随机数   判断它是否为偶数
            int n = (int)( Math.random()*100);
            if(n%2 == 0){
                System.out.println("这是数是偶数");
            }
            System.out.println("程序结束");
    

    2、if...else条件分支

    语法:

      if(条件){
           语句块1
      }else{
          语句块2
      }
    

    解释: 如果条件成立, 则执行语句块1 ,如果条件不成立 ,则执行语句块2

      int n = (int)(Math.random()*100);
            // n<50 需要买西瓜   >50 需要买葡萄
            if(n<50){
                System.out.println("买了一个大西瓜");
            }else{
                System.out.println("买了一串葡萄");
            }
            System.out.println("n->"+n);
            System.out.println(" 嗯,程序猿的女朋友很高兴,至少买了水果");
    

    3、if...else if ... else 多条件分支

    语法:

     if(条件1){
         语句块1
     }else if(条件2){
         语句块2
     }else if(条件3){
         语句块3
     }
     ...
     else{
         语句块4
     }
    

    解释: 从条件1开始依次判断,如果条件1 成立,则执行语句块1 ,其他条件不再执行,如果条件2成立,则执行语句块2,其他条件不再执行。。。 依次类推如果条件都不成立,则执行else语句块。 ,最终只执行其中某一个语句块,

       // 随机生成90以内的年龄  整数
            int n = (int)(Math.random()*90);
            if(n<18){
                System.out.println("未成年");
            }else if( n<30){
                System.out.println("青年");
            }else if( n<50){
                System.out.println("中年");
            }else if( n<70){
                System.out.println("老年");
            }else{
                System.out.println("晚年");
            }
            System.out.println("n->"+n); 
    

    嵌套条件判断

    语法: 以上3种格式 ,可以同时使用,在一个if语句再次嵌套if 语句

            // 接收控制台输入 ,  判断 输入的数 是否能被3整除
              // 如果能被3整除,输出这个数除以3的结果,并判断结果能被7整除
               // 如果不能被3整除,判断是否为偶数
    
            Scanner sc = new Scanner(System.in);
            // 接收控制台输入的整数
            int n = sc.nextInt();
            if(n%3 == 0 ){
                System.out.println("这个数能被3整除");
                // 在if语句中继续判断, 就是嵌套条件判断 ,需要往后缩进
                int result= n/3;
             	if(result%7 == 0){
                    System.out.println("这个结果能被7整除");
                }else{
                    System.out.println("这个结果不能被7整除");
                }
            }else{
                System.out.println("这个数不能被3整除");
                if(n%2 ==0){
                    System.out.println("这个数能2整除");
                }else{
                    System.out.println("这个数不能被2整除");
                }
            }
    

    注意 : 嵌套条件时 为了增强代码的可读性,将条件语句块的分支 往后缩进 ,{}作为一个整体

          条件语句块中如果只有一个输出语句, 可以省略{} 
    

    5、选择条件判断

    语法:

    switch(表达式){
        case 常量值1:
           语句块1;
          break;    // 语句块接收的标记
        case 常量值2:
           语句块2;
           break;
          ...
        default: 
           语句块3;
           break;
    }
    

    注意: switch 的表达式判断 只能等值比较 ,其中case的常量值 类型位: 整数型(byte short int long ),字符型,字符串型,枚举型

      byte n = (byte)(Math.random()*7+1);
            switch (n){
                case 1 :
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6 :
                    System.out.println("星期六");
                    break;
                default :
                    System.out.println("星期天");
                    break;
            }
    
    

    case穿透问题

    在switch中,如果case后面不写break,将会出现穿透现象,也就是说不会执行下一个case的判断条件直接往后运行,直到遇到break,或整体switch结束

    练习

    * 1、使用switch制作一个简单的计算器:
    * 让用户输入计算数字1和运算符 及计算数字2,然后程序帮他计算出结果。
    *
    

    二、循环

    1、循环定义

      在Java程序中,重复的执行某一段代码 这个过程称之为循环, 为了避免出现死循环,循环分为四部分
    
      1、初始条件
    
      2、循环的判断条件 ,条件为true ,则进入循环体
    
      3、循环体  
    
       4、迭代变量 
    

    while循环

    语法:

      初始条件
      while(判断条件){
          循环体
          迭代部分 (为了改变循环的判断条件)
      }
    

    1600842052900

    计算1到100的累计之和  1+2+3+4...+100=?
    
    初始值 n=  1
    条件:  100以内的 数可以一直累加(一直循环)
    迭代: n++ 
    
     //计算 1到100的累加之和
            int sum=0;
            int  n=1;
            while(n<=100){
                sum+=n;
                n++;
            }
            System.out.println("n:"+n);
            System.out.println("sum:"+sum);
    

    do...while循环

    语法:

     初始值1
     do{
         循环体2
         迭代部分3
     }while(返回boolean类型的表达式4);
    

    执行顺序: 123-》423 -》423-》423 .。。4 直到条件4为false 则退出循环。

    先执行初始值 1,循环体2 ,迭代3 
    
    再判断条件4是否成立,成立,继续执行2,3 
    

    再判断条件4是否成立,成立,继续执行2,3

    ...

    判断条件4是否成立,不成立,退出
    
            int i=0;
              do{
                  System.out.println("i--"+i);
                  i++;
              }while(i<10);
    
            System.out.println("i===="+i);
            /**
             * 第一遍: 输出 0   i=1
             * 第二遍: 判断 1<10  成立  输出1   i=2
             * 第三遍: 判断 2<10  成立  输出2   i=3
             * .。。
             * 第九遍: 判断8<10  成立  输出8   i=9
             * 第十遍:判断 9<10  成立 输出9    i=10
             * 第十一遍: 判断 10<10 不成立。退出
             *
             *
             */
    

    问题: while循环与do while循环的区别?

    1、while循环先判断条件是否成立,再执行循环体,do while循环 先执行一遍循环体再判断条件。

    break : 退出循环

    for循环

          for循环的升级版就是  foreach循环
    
          for循环通常在明确循环次数的情况下使用, 它也分为四部分
    

    语法:

     for(初始值1 ; 循环判断条件2 ; 迭代部分3 ){
         循环体4
     }
     或者
      
     初始值
     for( ; 循环判断条件 ; ){
         
         循环体
         
         迭代部分
     }
     // 他们的区别是 初始值定义在for的外边,就可以在循环外边使用
    

    循环执行流程:

    1243-》243-》243-》243-》。。。》2 为false 循环退出
    

    例如 :循环输出5遍hello world

      // i 表示计数器,从1开始 到5结束
     for(int i=1 ;i<=5 ; i++){
          System.out.println("hello world");
      }
    

    循环的执行顺序:

    第一遍: i=1 1<5 成立 输出“hello world ” i++ i=2

    第二遍 :2<=5 成立 输出“hello world” i=3

    第三遍 : 3<=5 成立 输出”hello world“ i=4

    第四遍: 4<=5成立 输出”hello world“ i=5

    第五遍: 5<=5 成立 输出”hello world“ i=6

    第六遍: 6<=5 不成立,退出

    i=6

    使用for循环计算1-的阶乘

     // 使用for循环 计算 10的阶乘
            for(int i=1;i<=10;i++){
                sum*=i;
            }
    

    for循环部分可以省略

            // 死循环
            for(;;){
                System.out.println("hello");
            }
    
            for(;true;){
               System.out.println("hello world");
            }
    
      // 迭代部分的代码 可以 放入循环体中
      int i=0;
      for( ; i<10; ){
      System.out.println("第"+i+"次输出");
      i++;
      }
    
    • 1、使用switch制作一个简单的计算器:
    • 例题:让用户输入计算数字1和运算符 及计算数字2,然后程序帮他计算出结果。
    *  public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入要计算的数字与运算符号,用空格隔开!");
            int a=sc.nextInt();//接收要计算的数字a
            String num=sc.next();//获取要运算的符号
            int b=sc.nextInt();//接收要计算的数字b
            double sum=0;
            switch (num){
                case "+":
                    System.out.println(sum=a+b);
                    break;
                case "-":
                    System.out.println(sum=a-b);
                    break;
                case "*":
                    System.out.println(sum=a*b);
                    break;
                case "/":
                    System.out.println(sum=a/b);
                    break;
                    default:
                        System.out.println("输入有误!");
            }
        }
    
  • 相关阅读:
    JS中event.keyCode用法及keyCode对照表
    ★会用这两键,你就是电脑高手了
    ★会用这两键,你就是电脑高手了
    利用:header匹配所有标题做目录
    利用:header匹配所有标题做目录
    [转载]Linux shell中的竖线(|)——管道符号
    [转载]Linux shell中的竖线(|)——管道符号
    互联网告别免费时代,准备好了吗?
    互联网告别免费时代,准备好了吗?
    【★】交换层网关协议大总结!
  • 原文地址:https://www.cnblogs.com/z5452830/p/13797984.html
Copyright © 2020-2023  润新知