zoukankan      html  css  js  c++  java
  • JavaSE语言基础之流程控制语句

    一.分支语句

    1. if语句

    if 、if-else、if-else-if:可以处理一切分支判断。
    格式:1)  if(判断条件){

                    执行操作; //当判断条件为true时 才执行

                 }

             2)  if(判断条件)){

                   执行操作;

                 }else{

                  方法体;

                }

             3)  if(判断条件)){

                   执行操作;

                 }else if(判断条件2)){

                     执行操作;

                 }else{

                   ...

                }

    // 判断一个数是否为奇数
             
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入一个非0数字");
                int num = scanner.nextInt();
                if (num % 2 == 1) {
                    System.out.println("您输入的数是奇数");
                }
                else  {
                    System.out.println("您输入的数是偶数");
                } 
            //判断字符串的方式
            // 使用equals()方法判断字符串是否相等 不可用 ==
            // !str.equals()
               String str = "张三";
               if (str.equals("张三")) {
               System.out.println("恭喜你说对了");
              } else {
                  System.out.println("说错了");
              }   
    View Code
            /* 需求
             * 用户输入一个年份 判断该年是否是闰年
             * 闰年判断: 可以被4整除但不能被100整除 可以被400整除
             * 若为闰年则输出该年为闰年  否则输出 平年
             */
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入一个年份");
    
            int years = scanner.nextInt();
    
            if (years % 4 == 0 && years % 100 != 0 || years % 400 == 0) {
    
                System.out.println(years + "年是闰年");
    
            } else {
    
                System.out.println(years + "年是平年");
            }

     注意:  逻辑判断 无论逻辑又多么复杂 结果只有两只情况 true/false

    2. switch语句

      格式: switch(常量){

                    case 常量1:

                       执行操作;

                          break;

                    case 常量2:

                       执行操作;

                        break;
                       ….

              }

    import java.util.Scanner;
    
    public class Test2 {
        public static void main(String[] args) {
            //输入年份和月份,输出该月的天数 (使用switch case语句)
            //再输入日期 判断该日期是该年的第多少天?
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入年份");
            int year = scanner.nextInt();
            System.out.println("请输入月份");
            int month = scanner.nextInt();
            System.out.println("请输入日期");
            int day = scanner.nextInt();
            boolean isLeapYear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
            int days = 0;
    
     switch (month) {
                        case 12:
                            days += 30;
                        case 11:
                            days += 31;
                        case 10:
                            days += 30;
                        case 9:
                            days += 31;
                        case 8:
                            days += 31;
                        case 7:
                            days += 30;
                        case 6:
                            days += 31;
                        case 5:
                            days += 30;
                        case 4:
                            days += 31;
                        case 3:
                            int day1 = isLeapYear ? 29 : 28;
                            days += day1;
                        case 2:
                            days += 31;
    
                        case 1:
                            days += day;
                            System.out.println(year + "年" + month + "月" + day + "日是该年的第" + days + "天");
                            break;
                        default:
                            System.out.println("您输入的月份有错误,请重新输入");
                            break;
                    }
    View Code


        注意事项:

       break 代表跳出关键字 只要遇见了break 就会停止执行该代码块(switch{})
       switch case 语句限制条件:
                  只能判断 byte short int  字符串 字符 包装类 枚举类
                  不能判断 boolean型  long型
                  不能对某一范围进行判断 必须是具体的内容
        swtich-case:若case中无符合的数,并且default写在最前(无break时),则为顺序执行,有break或 } 则退出。
        swtich-case:若case中无符合的数,并且default写在最后,则执行default。
        swtich-case:若case中有符合的数,并且default写在最后,并且default前面的case没有break时,default也会执行。

    二. 循环控制语句
    ①for:最常用,用在与次数有关的循环处理,甚至只用for可以解决任何循环问题。
        注意事项:for中定义的用于控制次数的循环变量,只在for中有效,for结束则循环变量被释放(回收)。
            语法:
              1. for(循环变量初始化;循环条件;自增/自减){
                       代码块;
                }
             2. 循环嵌套
              or(循环变量初始化;循环条件;自增/自减){
                        执行语句1;
                         for(循环变量初始化;循环条件;自增/自减){
                              执行语句2;
                        }
             }

    /**
     *1. 有1,2,3,4四个数字,问这4个数字能组成多少个互不相同且无数字重复的三位数?都是多少?
     * 2.一个数如果恰好等于它的因子之和,这个数就成为”完数”.例如 6 = 1 + 2 + 3,找出1000以内的所有完数.
     */
    1.
    public class HW1 {
        public static void main(String[] args) {
            int c = 0 ;
            for (int i = 1; i < 5; i++) {
                for (int i1 = 1; i1 < 5; i1++) {
                    for (int i2 = 1; i2 < 5; i2++) {
                        if ( i2 != i1 && i2 != i && i1 != i){
                            System.out.println("这样的三位数有: " + i + i1 + i2);
                            c ++ ;
                        }
                    }
                }
            }
            System.out.println("共有 " + c + " 个这样的数”);
    2.
            for (int i = 1; i < 1000; i++) {
                int sum = 0;
                for (int i1 = 1; i1 < i; i1++) {
                    if (i%i1==0){
                        sum  += i1;
                    }
                }
                if (sum==i){
                    System.out.println("完数有:" + i);
                }
            }
        }
    }


    ②while:很常用,用在循环时候要先检查循环条件再处理循环体,用在与次数无关的情况。如果不能明确结束条件的时候,先使用while(true),在适当条件使用if语句加break结束循环。

       while(条件){
                  执行代码
           }
    *当条件为true时执行{}里面的内容
    *当条件为false时 跳出循环
    * 注意:
          必须要有 条件为false的情况 否则就是死循环
          死循环可用 break 跳出循环

    // 斐波那切数列
    public class HW3 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入需要几个斐波那契数");
            int n = scanner.nextInt();
            long prev = 1;
            long next = 1;
            long accumulate = 0;
            int i=0;
            System.out.print(prev + " ");
            System.out.print(next + " ");
            while (i<n-2) {
                accumulate = prev + next;
                prev = next;
                next = accumulate;
                System.out.print(accumulate + " ");
                i++;
            }
        }
    }


    ③do-while:在循环最后判断是否结束的循环。如:使用while(true) 实现循环的时候,结束条件break在while循环体的最后,就可以使用 do-while 。do-while 的结束条件经常是“否定逻辑条件”,不便于思考业务逻辑,使用的时候需要注意。可以利用while(true)+ break 替换。

      * do while循环
          语法:
             do{
                 代码块
            }while(条件);
     while 先执行判断条件 在执行代码块里的内容
     do...while 先执行一次代码块里的内容 在判断条件 无论条件是否满足

    //水仙花数
    public class HW1 {
        public static void main(String[] args) {
            //找出100~1000之间的水仙花数
            //水仙花数 abc = a^3 + b^3 + c^3
            int num = 100;
            while (num < 1000) {
                int a = num/100;
                int b = num%100/10;
                int c = num%10;
                if (num == (a * a * a + b * b * b + c * c * c)) {
                    System.out.println(num + " 是水仙花数");
                }
                num++;
            }
        }
    }


    ④循环三要素:A.循环变量初值  B.循环条件  C.循环变量增量(是循环趋于结束的表达式)
    ⑤for和while循环体中仅一条语句,也要补全{ },当有多条语句,且不写{ }时,它们只执行紧跟着的第一条语句。
    ⑥循环的替换:
     while(布尔表达式){} 等价 for(;布尔表达式;){}
     while(true){}  等价  for(;;)
     while(true){} + break 替换 do{}while(布尔表达式);
     for(;;) + break 替换 do{}while(布尔表达式);

    三.跳转控制语句
    continue:退出本次循环,直接执行下一次循环    
    break:退出所有循环

  • 相关阅读:
    您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
    redis和jedis的用法,区别
    Jedis实现多种功能总结
    Druid简单介绍
    Svn与Git的区别
    SVN的一些基本概念(学前了解)
    Redis-cli 的功能
    postman的使用方法
    Spring Boot 有哪些优点?
    Redis中的常用命令哪些?
  • 原文地址:https://www.cnblogs.com/luke-liuqi/p/9305234.html
Copyright © 2011-2022 走看看