zoukankan      html  css  js  c++  java
  • java的控制流程

    1、顺序结构
    顺序结构就是指按语句执行的先后顺序,或者说语句出现的先后顺序逐条执行程序语句、语句块,完全是按照程序平台的执行约定进行的,比如第一个 HelloWorld程序:
    public class HelloWorld
    {
          //程序的主函数入门
          public staticvoid main(String args[])
          {
               //输出打印字符语句
              System.out.println("HelloWorld!");
          }
    }
    执行的语句顺序依次如下:
    1、public class HelloWorld,找到程序的定义类,从而进行编译字节码文件。
    2、public staticvoid main(String args[]),找到程序的主方法(主函数)入口,执行该方法中的语句。
    3、System.out.println("HelloWorld!"); 执行主方法中的打印语句。


    一个项目的执行首先是找到程序的主类文件中的主类定义,即上面的第一个语句;然后去找主方法,并执行主方法中的语句,从而将程序逐渐编译执行。


    二、分支语句——if语句

    1、if语句的一般形式:
    if(<条件表达式>) 
    <语句组1>;
          [else     
    <语句组2>;]
    举例:
    public class TestIF1 {
      public static void main(String[] args)   {
    int i = 65;
            if (i>=60)
      System.out.println("及格");
    else 
      System.out.println("不及格");
      }
    }


    这个例子用于判断一个分数是否及格,先判断if的条件表达式 x>=60是否为真,如果为true 则执行if语句的语句组,这里就是语句 System.out.println("及格!");,如果不为真 则执行else中的语句 System.out.println("不及格!");这是一种典型的二维判断,也就是只判断是否满足 if中的表达式情况,属于非此即彼的判断。
    注意: 对于java的语法描述形式中 ,在尖括号中的语句是必须要有的, 在方括号中的语法是不是必须的,即需要的时候就用,不需要的时候就不用,比如if语句的一般形式语法形式中,if的表达式必须要有,语句组也必须要有(可以不写语句组,但是如果什么都不执行,if语句也就没有意义了),而else语句不是必须要有的,根据程序需来设置。


    比如,如果只打印输出及格的分数,则就不需要 else语句了。
      


    2、if语句的嵌套形式
    if(<条件1>)
         <语句块1>;
    elseif (<条件2>)
         <语句块2>;
    elseif (<条件3>)

    当对于多个条件进行判断用 if语句的一般形式就不行了,比如根据学生的成绩评定若干等级的问题。

    public class TestIF2{
      public static void main(String[] args){
    	int i = 88;
    	if(i >=90) 
    	   System.out.println("优秀");
    	else if (i >=80) 
    	   System.out.println("良好");
    	else if (i>=70) 
    	   System.out.println("中等");
    	else  if (i>=60)
    	   System.out.println("及格");
    	else 
    	   System.out.println("不及格");	
      }
    }




    程序的执行,首先判断 if 条件表达式,为真,则执行语句体。其余的 else if 和 else 语句均不执行;
    if语句为假,则执行第一个 else if 表达式判断,为真,则执行语句体。其余的 else if 和 else 语句均不执行;
    第一个 else if 表达式判断,为假,则对第二个  else if 表达式判断,为真,则执行语句体。其余的 else if 和 else 语句均不执行;
    以此类推,直至执行到 最后的else语句。


    实际上面的例子仍然是 if else语句的组成的,只是在一个 else语句中又使用到了 if else语句,具体格式写出来应该是如下:

    public class TestIF2{
      public static void main(String[] args){
    	int i = 88;
    	if(i >=90){ 
    	   System.out.println("优秀");
    	}
    	else{
    		if (i >=80){
    			System.out.println("良好");
    		}
    		else{
    			if (i>=70){
    				System.out.println("中等");
    			}
    			else{
    				if (i>=60){
    				   	System.out.println("及格");
    				}
    				else{ 
    				   	System.out.println("不及格");
    				}
    			}
    		}
    	}	
      }
    }





    查看这个代码,可以看出这中写法看起来比较费劲,很容易搞混淆,所以才去了上面的写法,但是要注意,只有 if的嵌套才 使用这个写法,初次之外的程序语句均应按照标准的格式去写,以方便程序的阅读。


    注意 :所谓分支语句,即不管其多么复制,只能执行其中某个条件判断中的一组语句。


    三、分支语句——switch语句 

    switch语句的一般形式:
      switch(<表达式>)
     {
        case <值1>:<语句块1>;break;
        case <值2>:<语句块2>;break;
       ………..
       case <值n>:<语句块n>;break;
      [default:<缺省语句块>;]
     }


    仍然以分数判断为例,代码如下:

    public class TestSwitch {
      public static void main(String[] args) {
    	int score=95;
    	int i=score/10;	//因为 i 是整形变量,score/10=9.5 的值自动转换为整形变量9
    	switch(i) {
    	  case 9:		//当i的值为9时,执行语句体
    			 System.out.println("优秀");
    		     break; //中断判断,跳出 switch语句
    	  case 8:
    			 System.out.println("良好");
    			 break;
    	  case 7:
    			 System.out.println("中等");
    			 break;
    	  case 6:
    			 System.out.println("及格");
    			 break;
    	  default:	//当各个 case条件不满足是执行的语句
    			 System.out.println("不及格");
    	}
      }
    }
    




    四、使用 单if语句 实现 if嵌套、switch语句的功能

    public class TestIF2{
      public static void main(String[] args){
    	int i = 88;
    	String s;
    	if (i>=60)
    		s="及格";  //此时 s="及格"
    	else 
    		s="不及格";
    	if (i>=70) s="中等";	// 此时 s="中等"
    	if (i>=80) s="良好";	//此时 s="良好"
    	if (i>=90) s="优秀";	//不执行
    	System.out.println(s);
      }
    }




    通过将条件按照从小到大的顺序排列起来,不断改变s的值,从而利用顺序结构实现了分支选择结构。以上代码同样实现的成绩的等级判定功能,也实现了if嵌套、switch才能实现的功能。
    但是这种代码看起来结构不够清晰,容易出错,但确实是一种实现思路。其有一个缺点,就是每条 if 语句都要执行判断一次,而采用 if嵌套、switch语句当执行到符合条件的表达式是,就不需要执行其余的判断语句了,当程序中采用这样的模式进行处理程序时,就造成了硬件资源的浪费。


    五、while循环
    while语句是Java语言最基本的循环语句.
    while语句的一般形式 :                               
        
         while(<条件表达式>)     
        {
              <循环体>;      
         } 


    例子:自然数从1累加到100

    public class TestWhile {
      public static void main(String[] args){
       	int i=1,sum=0;
       	while(i<=100){  //先判断条件表达式,再执行 循环体
       	  sum+=i;
       	  i++;
       	}    
        System.out.println(sum);
      }
    }




    六、do-while循环
    do-while语句的一般形式为:
     
     do{    
        <循环体语句>;
       } while (<条件表达式>); 

    public class TestDoWhile {
      public static void main(String[] args){
       	int i=1,sum=0;
        do{
       	  sum+=i;
       	  i++;
       	}   	
       	while(i<=100); 
        System.out.println(sum);
      }
    }




    注意:while循环是先判断条件表达式,再执行循环体;而 do-while循环是 先执行一次循环体,然后再判断条件表达式。


    七、for循环
    for语句的一般形式为:
     for (<表达式1>;<表达式2>;<表达式3>)
     {
       <循环体语句>
      }
    其中:
    表达式1是设置控制循环的变量的初值。
    表达式2作为条件判断部分可以是任何布尔表达式。
    表达式3是修改控制循环变量递增或递减,从而改变循环条件。 


    实例

    public class TestFor {
       public static void main(String[] args){
       	 int i,sum=0;
       	 for(i=1;i<=100;i++){
           		sum+=i;
    	 }
            System.out.println(sum);
       }
    }
  • 相关阅读:
    矩阵快速幂 HDU3483
    欧拉函数 求小于某个数并与其互质的数的个数
    扩展欧几里德算法求逆元3
    拓展欧几里德算法求逆元2
    【20140113-2】MyEclipse生成javadoc时出错:编码GBK的不可映射字符
    【131202】SQL
    【20140113】package 与 import
    系统架构等级
    ora-01658 :无法为表空间USERS 中的段创建INITIAL区
    WMSYS.WM_CONCAT 函數的用法
  • 原文地址:https://www.cnblogs.com/liaoliao/p/5009089.html
Copyright © 2011-2022 走看看