程序流程控制(顺序结构、分支结构、循环结构)

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

  1. 顺序结构

  1. 分支结构

  1. 循环结构

顺序结构

程序从上到下逐行的执行,中间没有任何判断和跳转。

分支结构

根据条件,选择性地执行某段代码。

有If……else和Switch-case两种分支语句。

循环结构

根据循环条件,重复性的执行某段代码。

有while,do....while,for三种循环语句。

注:JDK1.5提供了foreach循环,方便的遍历集合,数组元素。

分支结构的if-else(条件判断结构)

if的三种格式:

一、

if(条件表达式){

执行代码块;

}

二、二选一

if(条件表达式){

执行代码块1;

}

else{

执行代码块2:

}

三、多选一

if(条件表达式1){

执行代码块1;

}

else if(){

执行代码块2;

}

.....

else{

执行代码块n;

}

如何获取一个随机数:

公式:[a,b]:(int)(Math.random()*(b-a+1))+a);

import java.util.Scanner;
public class helloworld {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你的身高");
        int height = scan.nextInt();
        System.out.println("请输入你的财产(千万)");
        double wealth = scan.nextDouble();
        System.out.println("请问你是否帅   是/否");
        String hansome = scan.next();
        if (height > 180 && wealth > 1 && hansome.equals("是")) {
            System.out.println("一定要嫁给他");
        } else if (height > 180 || wealth > 1 || hansome.equals("是")) {
            System.out.println("比上不足,比下有余");
        } else {
            System.out.println("滚");
        }
    }
}

分支结构的switch-case

1.格式:

switch(){

case 常量1

执行语句1;

break;

case 常量2:

执行语句2;

break;

......

default:

执行语句n;

break;

}

2.说明:

①:根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。当调用执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。

②:break,可以使用在switch-case结构中,表示一旦执行此关键字,就跳出switch-case结构

③:switch结构中的表达式,只能是如下6中数据类型之一:byte、short,char,int,枚举类型(JDK5.0新增),String类型(JDK7.0新增)

④:case之后只能声明常量,不能声明范围;

⑤:break关键字是可选的。

⑥:default:相当于if-else结构中的else;

default是可选的,而且位置灵活;

⑦:如果switch-case结构中的多个case的执行语句相同,则可以合并;

说明:

1.凡是可以使用switch-case的结构,都可以转换为if-else,反之,不成立;

  1. 我们写分支结构时,当发现既可以使用switch-case,(同时,Switch中表达式的取值情况不太多)又可以使用if-else时,我们优先选择使用switch-case;

例题:

给出一个几年几月几日输出是几年的第几天;

代码如下:

package com.zsr.java;

import java.util.Scanner;
public class helloworld{
       public  static void main(String[] args){
             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 somedays=0;
             switch(month){
                    case 12:
                           somedays+=31;
                    case 11:
                           somedays+=30;
                    case 10:
                           somedays+=31;
                    case 9:
                           somedays+=30;
                    case 8:
                           somedays+=31;
                    case 7:
                           somedays+=31;
                    case 6:
                           somedays+=30;
                    case 5:
                           somedays+=31;
                    case 4:
                           somedays+=30;
                    case 3:
                           somedays+=31;
                    case 2:
                         if((year%4==0&&year%100!=0)||year%400==0)
                                somedays+=29;
                         else
                                somedays+=28;
                    case 1:
                           somedays+=day;
                           break;

        }
              System.out.println(month+"月"+day+"日"+"是"+year+"年的第"+somedays+"天");
        }
        }

循环结构

循环语句(init_statement)

循环条件部分(test_exp)

循环体部分(body_statement)

迭代部分(alter_statement)

for循环结构的使用:

一、循环结构的4个要素

①:初始化条件

②:循环条件----->是boolean类型;

③:循环体

④:迭代条件

二、for循环的结构:

for(①;②;④)

{

③;

}

执行过程:①-②-③-④-②-③-④……-②;

java特有的 for(声明循环变量:数组的名字

eg:

package com.zsr.java;

//import java.util.Scanner;
public class helloworld{
       public  static void main(String[] args) {
        int num=0,sum=0;
        for(int i=200;i>=0;i--)
        {
            System.out.print(i+"     ");
            if(i%2==0)
                System.out.print("ou"+"   ");
            if(i%3==0)
                System.out.print("biz"+"   ");
            if(i%7==0)
                System.out.print("ban"+"   ");
            System.out.println();
        }
       }
}

eg: 求最大公约数和最小公倍数

package com.zsr.java;

//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
       public  static void main(String[] args) {
           Scanner scan =new Scanner(System.in);
           System.out.println("请输入第一个数");
           int num1 =scan.nextInt();
           System.out.println("请输入第二个数");
           int num2=scan.nextInt();
           //求最大公约数
           int min=(num1<num2)?num1:num2;
           for(int i=min;i>=1;i--)
           {
               if(num1%i==0&&num2%i==0)
               {
                   System.out.println("最大公约数"+i);
                   break;
               }
           }
           //求最小公倍数;
           int max=num1>num2?num1:num2;
           for(int j=max;j<=num1*num2;j++)
           {
               if(j%num1==0&&j%num2==0)
               {
                   System.out.println("最小公倍数"+j);
                   break;
               }
           }

       }
}

while 循环的使用

一、循环结构的4个要素

①:初始化条件

②:循环条件----->是boolean类型;

③:循环体

④:迭代条件

二、while循环结构:

while(②){

③;

④;

}

执行过程:①-②-③-④-②-③-④-……-②;

说明:

1.写while循环千万小心不要丢了迭代条件,一旦丢了,就可能导致死循环;

2.for循环和while循环是可以相互转换的;

区别:for循环和while循环的初始化条件部分的作用范围不同。

三、do-while循环结构:

do{

③;

④;

}while(②);

执行过程:①-③-④-②-③-④……②;

说明:

1.do-while循环至少会循环执行一次循环。

2.开发中,使用for和while更多一些,较少使用do-while

3.不在循环条件部分限制次数的结构:for(;;)==while(true)

4.结束循环有几种方式:

方式一:循环条件部分返回false

方式二:在循环体中,执行break

嵌套循环的使用:

1.嵌套循环:将一个循环结构A声明在另一个循环结构B的循环中,就构成了嵌套循环。

2.

外层循环:循环结构B;

内层循环:循环结构A;

3.说明:

①:内层循环结构遍历一遍,只相当于外层循环循环体执行一次。

②:假设外层循环需执行m次,内层循环需要执行n次,此时内层循环的循环体一共执行m*n次。

③:外层循环控制行数,内层循环控制列数。

枚举类型:

enum 枚举名{

常量列表

}

eg1:

enum Season{

春季,夏季,秋季,冬季

}

上下三角形

package com.zsr.java;

//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
      public static void main(String[] args )
      {
          //矩阵
      for(int i=1;i<=5;i++)
      {
          for(int j=1;j<=5;j++)
          {
              System.out.print("*");
          }
          System.out.println();
      }
      //上三角形
      for(int i=1;i<=5;i++)
      {
          for(int j=1;j<=i;j++){
              System.out.print("*");}
          System.out.println();
      }
      //下三角形
     for(int i=1;i<=5;i++)
     {
      for(int j=1;j<=5-i;j++)
    {
        System.out.print("&");
    }
    System.out.println();
     }
      }
}

运行结果

*****
*****
*****
*****
*****
*
**
***
****
*****
&&&&
&&&
&&
&

菱形

package com.zsr.java;

//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
     public static void main(String[] args){
         //上半部分
     for(int i=0;i<5;i++)
     {
         for(int j=0;j<5-i;j++)
         {
             System.out.print(" ");
         }

         for(int k=0;k<i+1;k++)
         {
             System.out.print("$ ");
         }
         System.out.println();
     }
     //下半部分
         for(int i=0;i<5;i++)
         {
             for(int j=0;j<i+1;j++)
             {
                 System.out.print(" ");
             }
             for(int k=0;k<5-i;k++)
             {System.out.print("$ ");
             }
             System.out.println();
         }
     }
}

运行结果:

 
     $ 
    $ $ 
   $ $ $ 
  $ $ $ $ 
 $ $ $ $ $ 
 $ $ $ $ $ 
  $ $ $ $ 
   $ $ $ 
    $ $ 
     $ 

菱形2

package com.zsr.java;

//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
     public static void main(String[] args){
         //上半部分
     for(int i=1;i<=5;i++)
     {
         for(int j=1;j<=5-i;j++)
         {
             System.out.print(" ");
         }

         for(int k=1;k<=i;k++)
         {
             System.out.print("$ ");
         }
         System.out.println();
     }
     //下半部分
         for(int i=1;i<=5;i++)
         {
             for(int j=1;j<=i;j++)
             {
                 System.out.print(" ");
             }
             for(int k=1;k<=5-i;k++)
             {System.out.print("$ ");
             }
             System.out.println();
         }
     }
}

运行结果

    $ 
   $ $ 
  $ $ $ 
 $ $ $ $ 
$ $ $ $ $ 
 $ $ $ $ 
  $ $ $ 
   $ $ 
    $ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值