• java04 -程序控制结构


    java程序控制结构分三种:顺序结构、选择结构、循环结构

    1.顺序结构即从上往下、从左往右依次执行

    2.选择结构:分为if...else 结构、switch ..case 结构,其中if..else

    又分为 if 结构、 if...else 结构.... if ..else if ..else 结构:

    3:循环结构:分为for循环、while循环、do .. while 循环

    一 :if ..else 介绍:

        /*
            1.else 结构是可选结构
            2.如果if  执行语句只有一个,{}可以省略,但是一般不建议省略

           3.if-else结构可以嵌套,但是一般不要超过3层
            */
            
            //1.if 结构
            
            int a=100;
            int b=50;
            if(a>b)
            {
            System.out.println("a 是最大值");}
            
            //2.if ...else 结构
            int a1=100;
            int b1=150;
            if(a1>b1)
            {
            System.out.println("a1 是最大值");}
            else

       {System.out.println("b1 是最大值");}
            //3.if ..else..if 结构
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入身高:");
            int shengao=scan.nextInt();
            System.out.println(shengao);
            System.out.println("有钱吗:");
            String isWealth=scan.next();
            System.out.println(isWealth);
            System.out.println("帅不帅?:");
            boolean  isHandsome=scan.nextBoolean();
            System.out.println(isHandsome);
            if (shengao>180&& isWealth.equals("有钱")&&isHandsome==true){
                System.out.println("太好了。我要嫁!");
            }
            else if (shengao>180|| isWealth.equals("有钱")||isHandsome==true){
                System.out.println("不挑了,嫁了吧!");
            }
            else{
                System.out.println("滚一边去!");
            }

    /*
            4.从键盘输入三个数 并按从小到大排列:
            思路:第三个数可以在下滑线的情况:_n1_n2_或 _n2_n1_  
            
            */
                Scanner scan = new Scanner(System.in);
                System.out.println("请输入第一个数:");
                int n1= scan.nextInt();
                System.out.println("请输入第二个数:");
                int n2= scan.nextInt();
                System.out.println("请输入第三个数:");
                int n3= scan.nextInt();
                
                if (n1>n2){
                    if(n3>n1){
                        
                        System.out.println("排序为:" +n2+","+n1+","+n3);
                    }
                    else if (n3                 {System.out.println("排序为:" +n3+","+n2+","+n1);}
                else
                    {System.out.println("排序为:" +n2+","+n3+","+n1);}
                }
                else if (n1                 
                    if(n3>n2){
                        
                        System.out.println("排序为:" +n1+","+n2+","+n3);
                    }
                    else if (n3                 {System.out.println("排序为:" +n3+","+n1+","+n2);}
                else
                    {System.out.println("排序为:" +n1+","+n3+","+n2);}
                }

       二.switch....case 介绍:

    /*
            1.根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应的
            case结构中,调用其执行语句。当调用完成执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch末尾结束为止。
            2.break 可以使用在 switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
            3.switch 结构中的表达式,只能是以下六种类型之一:byte、short、char、int、枚举类型、String类型
            4.case 之后只能声明常量,不能声明范围
            5.break 关键字是可选的
            6.default:相当于if else中的else,default结构是可选的,而且位置灵活
            
           
            //例题1
            int number=3;
            switch(number){
                
                case 1:
                System.out.println("one");
                break;
                
                case 2:
                
                System.out.println("two");    
                
                case 3:
                System.out.println("three");
                System.out.println("333");
                System.out.println("666");
                break;
                case 4:
                System.out.println("four");
                
                defalut:
                System.out.println("anyone else");
            }
                */
                //例题2:从键盘输入2019年的月份和日期,算出是这一年的第几天
                
                 Scanner scan = new Scanner(System.in);
                 System.out.println("请输入月份");
                 int month = scan.nextInt();
                  System.out.println("请输入天数");
                 int day = scan.nextInt();
                 int sumday = 0;
                 switch(month){
                 case 12:
                       sumday+=30;
                 case 11:
                       sumday+=31;
                 case 10:
                       sumday+=30;
                 case 9:
                       sumday+=31;
                 case 8:
                       sumday+=31;
                 
                 case 7:
                       sumday+=30;
                 
                 case 6:
                       sumday+=31;
                 
                 case 5:
                       sumday+=30;
                 case 4:
                       sumday+=31;
                 case 3:
                       sumday+=28;
                 case 2:
                       sumday+=31;
                 case 1:
                     sumday+=day;
                 
                 }
                    System.out.println(sumday);

    /*例题3:从键盘输入某年的月份和日期,算出是这一年的第几天,
                         注:判断闰年的2个条件:
                            1)能被4正除,不能被100整除
                            2)能被400整除
                */
                 Scanner scan = new Scanner(System.in);
                  System.out.println("请输入年份");
                  int year = scan.nextInt();
                 System.out.println("请输入月份");
                 int month = scan.nextInt();
                  System.out.println("请输入天数");
                 int day = scan.nextInt();
                 int sumday = 0;
                 switch(month){
                 case 12:
                       sumday+=30;
                 case 11:
                       sumday+=31;
                 case 10:
                       sumday+=30;
                 case 9:
                       sumday+=31;
                 case 8:
                       sumday+=31;
                 
                 case 7:
                       sumday+=30;
                 
                 case 6:
                       sumday+=31;
                 
                 case 5:
                       sumday+=30;
                 case 4:
                       sumday+=31;
                 case 3:
                      if((year % 4==0 && year%100!=0)|| year %400==0)
                       sumday+=29;
                   else 
                       sumday+=28;
                 case 2:
                       sumday+=31;
                 case 1:
                     sumday+=day;
                 
                 }
                    System.out.println(sumday);

      三.for循环 介绍:

    /*
         for循环的结构:
         for(1:2:4){
             3
         }
         1.初始化条件
         2.循环条件(为boolean类型)
         3.循环体
         4.迭代条件
         执行顺序 1-2-3-4-2-3-4-2... 直到2为false,跳出循环
        */
         // 例题1:求100内的偶数,及之和
         int sum=0;
         for(int i=1;i<100;i++){
             if(i%2==0){
                 System.out.println(i);
                 sum+=i;
             }
             
         }
         System.out.println(sum);
         
         
         
        // 例题2:从键盘输入2个正整数,并求2个数的最大公约数,和最小公倍数,如 12和20的最大公约数为4, 最小公倍数为60
         Scanner scan = new Scanner(System.in);
         System.out.println("请输入第一个正整数:");
         int m = scan.nextInt();
         System.out.println("请输入第二个正整数:");
         int n = scan.nextInt();
         //获取两个数的最小数
         int min = m      //求最大公约数
         for(int i=min; i>0;i--){
             if (m%i==0&&n%i==0){
                 System.out.println("最大公约数为:"+i);
                 break;//跳出循环
             }
             
         }
         int max =m>n?m:n;
         //求最小公倍数
         for (int i=max;i<=m*n;i++){
             if(i%m==0&&i%n==0){
                 System.out.println("最小公倍数为:"+i);
                  break;//跳出循环
             }
             
         }
         // 例题3:求所有的水仙花数,即一个三位数的 个位立方+十位的立方+百位的立方=本身
        
        for(int i=100;i<1000;i++){
            int bw= i/100;
            int sw=i%100/10;
            int gw=i%10;
            if(bw*bw*bw+sw*sw*sw+gw*gw*gw==i){
                System.out.println(i);
            }

    四.while循环和 do..while循环 介绍:

    /*
            while 循环也包含四个条件:
            1.变量初始化
            2.循环条件
            3.循环体
            4.迭代条件
            
            while 循环 的格式:
            1
            while(2){
                3
                4
            }
            注:
              1)while 循环和for循环是可以相互转换的。
              2) for 和while 终止循环的两种方法:1.循环条件为 false 2.使用break 关键字
                                                  

            */
            
            // 例题1:求 100以内的偶数和之和
            
            int i=1;
            int sum=0;
            while(i<100){
                if(i%2==0){
                    System.out.println(i);
                    sum+=i;
                }
                i++;
                
            }
            System.out.println(sum);
            
            
            // 例题2:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
            Scanner scan =new Scanner(System.in);
            int positiveNum=0;
            int negativeNum=0;
            System.out.println("请输入一个数:");
            while (true){
                    int num = scan.nextInt();
                    if(num>0){
                        positiveNum++;
                    
                    }
                    else if (num<0){
                        negativeNum++;
                    }
                    else{
                        break;
                    }
            }
            System.out.println("输入的正数个数为:"+positiveNum);
            System.out.println("输入的负数个数为:"+negativeNum);
            
            /*
            do.....while 循环也包含四个条件:
            1.变量初始化
            2.循环条件
            3.循环体
            4.迭代条件
            
            do while 循环 的格式:
            1
            do{
                3
                4
            }
            while(2)
                
            注:
            1).do while的特点 是  不管循环条件是否满足,首先会执行一次
            2).开发中一般用 for和while 循环 ,很少用do while 循环
             */
            // 例题1:求 100以内的偶数和之和
            
            int j=1;
            int sum2=0;
            do {
                if (j%2==0){
                    System.out.println(j);
                    sum2+=j;
                }
                j++;
            }while(j<100);
                System.out.println(sum2);
            
        }

    五.嵌套循环综合 练习:

    /*
            例题1:输入如下图形:
            ******
            ******
            ******
            ******
            思路:外层循环控制输出行数,里面循环控制输出列数
            
            for (int i=1;i<=5;i++){
            for(int j=1;j<=6;j++){
                System.out.print('*');
            }
            //换行
            System.out.println();
            
            */
                /*
            例题2:输入如下图形:
            *             i=1, j=1
            **            i=2,  j=2
            ***           i=3,  j=3
            ****          i=4, j=4
            *****         i=5,  j=5
            思路:外层循环控制输出行数,里面循环控制输出列数,按照如上的i 与j取值规律,故内层循环条件为:j<=i
            
            for (int i=1;i<=5;i++){
            for(int j=1;j<=i;j++){
                System.out.print('*');
            }
            //换行
            System.out.println();
        }
           //例题3:打印九九乘法表:
           //思路:外层循环控制输出行数,里面循环控制输出列数,按照i 与j取值规律,故内层循环条件为: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();
                  
           }
           
           //例题4:求100以内的质数,质数:只能被1和自己整除的数
              boolean flag =true;
              for(int i=2;i<100;i++){
                  for(int j=2;j                   if(i%j==0){
                          flag=false;
                          
                      }
                  }
                  if(flag){
                  System.out.println("质数为:"+i);}
                  flag=true;
                      
                  
              } 
              
                  
           
            //例题5:求100以内的质数,质数:只能被1和自己整除的数 (优化一:)
            long start = System.currentTimeMillis();
            boolean flag=true;
             for(int i=2;i<=100000;i++){
                 for(int j=2;j                  if(i%j==0){
                         flag=false;
                         break;//优化方案一,flag为false后跳出循环,后面的循环不用执行,可以节省时间,针对非质数的优化
                     }
                 }
                 if(flag){
                     System.out.println("质数为:"+i);
                 }
                 flag=true;
                 
                 
             }
             long end = System.currentTimeMillis();
             
             System.out.println("总耗时为:"+(end-start));
              */    
            //例题6:100以内的质数,质数:只能被1和自己整除的数 (优化二:)
            long start = System.currentTimeMillis();
            boolean flag=true;
             for(int i=2;i<=100000;i++){
                 for(int j=2;j<=Math.sqrt(i);j++){//化方案二:针对质数的优化
                     if(i%j==0){
                         flag=false;
                         break;//优化方案一,flag为false后跳出循环,后面的循环不用执行,可以节省时间,针对非质数的优化
                     }
                 }
                 if(flag){
                     System.out.println("质数为:"+i);
                 }
                 flag=true;
                 
                 
             }
             long end = System.currentTimeMillis();
             
             System.out.println("总耗时为:"+(end-start)); 

  • 相关阅读:
    Liquibase极致详细介绍 不看后悔十年!
    iOS 开发为什么要慎用多 Target 打包上架 app?
    2022年上半年部分团队的总结
    python代码是如何执行的?
    FactoryTalk View Studio
    刷爆力扣之第三大的数
    SpringBoot
    Pytorch 之torch.nn初探 池化--Pooling Layers
    【微服务】服务容错---Sentinel
    HttpRunnerManager安装(一)
  • 原文地址:https://blog.csdn.net/zzx_nihao/article/details/128106558