第三章 流程控制

目录

3.1程序结构

3.2条件语句

 3.2.1 if 条件语句

if..else语句 

if..else if多分支语句 

 if语句的嵌套

3.2.2switch多分支语句 

 3.3循环语句

3.3.1 while循环语句

3.3.2do...while循环语句

3.3.3while与do...while比较

3.3.4 for 循环 语句

 3.3.5 foreach语句

3.3.6循环语句的嵌套 

3.4 跳转语句 

3.4.1break跳出循环语句  

 3.4.2  continue语句


3.1程序结构

      顺序结构、选择结构和循环结构是结构化程序设计的3种基本结构,是各种复杂程序的基却单元。图3.1 展示了这3种程序结构的基本理念,其中,第幅图 是顺序结构的流程图, 它就书写顺序执行的语句构成的程序段;第二幅图是选择结构的流程图,它主要根据输入数据和中国的不同选择执行不同的语句,选择结构主要由条件语句(也叫判断语句或者分支语句)组成:而第三幅图是循环结构的流程图,它是在一定条件下反复执行某段程序的流程结构,其中,-组被重复执行的语句称为循环体,而决定循环是否终止的判断条件是循环条件,循环结构主要由循环语句组成。
 

                                                    顺序结构的流程图

3.2条件语句

  if条件语句主要用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。
  使用 if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字 if之后是作为条件的“布尔表达式”,如果该表达式返回的结果为true,则执行其后的语句;若为false,则不执行if条件之后的语句。if条件语句可分为简单的 if条件语句、if...else 语句和 if...else if多分支语句。

 

 3.2.1 if 条件语句

例3.1 

 代码

结果

 

 例3.2

代码

package css;                                  //创建一个css包
	import java.util.Scanner;                  //导入输出函数需要用到的包
public class sss2 {                            //创建一个css类
	public static void main(String[] args) {//主函数
	Scanner in =new Scanner(System.in);//创建System对象,用于进行输入
	System.out.println("请输入要拨打的电话号码:");//输入号码
	int phoneNumber = in.nextInt();//创建变量,保存电话号码
	if (phoneNumber != 84972266);//判断此电话号码是否是84972266
									//如果不是84972266号码,则提示号码不存在
	System.out.println("对不起,你拨打的号码不存在!");//输出号码不存在的提示

	}
}

 结果

 

if..else语句 

例3.3

       if条件语句主要用于告诉程序在某个条件成立的情况下执行某段语句,而在另一一种情况下执行另外的语句。
使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。“布尔表达式”,如果该表达式返回的结果为true,则执行其后的语句:件之后的语句。if条件语句可分为简单的if条件语句、if....else语句和让若为else,则不执行证条....else if多分支语句。
 

 代码

public static void main(String[] args) {//主方法
		int math = 95;	//声明int型局部变量,并赋给初值95
		int english = 56;	//声明int型局部变量,并赋给初值56
		if(math>60) {//使用if语句判断math是否大于60
			System.out.println("数学及格了");//条件成立时输出的信息
		}else {
			System.out.println("数学没有及格");//条件不成立时输出的信息
		}
		if(english>60) {//使用if语句判断english是否大于60
			System.out.println("英语及格了");//条件成立时输出的信息
		}else {
			System.out.println("英语没有及格");//条件不成立时输出的信息
		}
	}

}

结果 

if..else if多分支语句 

     if.. else语句是条件语句中最常用的一种形式, 它会针对某种条件有选择地做出公为“如果满足某种条件,就进行某种处理,否则就进行另种处理”。

 例3.4

 代码

import java.util.Scanner;//导入输出函数需要用到的包
public class SSS5 {            //创建主类
	public static void main(String[] args) {//主方法
	int iyear;  //创建整形变量,保存输入的年份
	Scanner sc=new Scanner(System.in);//创建扫描器
	System.out.println("please input number");  //输出结果
	iyear = sc.nextInt();//控制台输入一个数字
	if(iyear%4 ==0) {//如果能被4整除
		if(iyear%100 ==0) {//如果能被100整除
			if(iyear%400 == 0 ) //  如果能被400整除
				System.out.println("It is a leap year");//是闰年
			else
				System.out.println("It is not a leap year");	//不是闰年
		}else 
				System.out.println("It is a leap year");//是闰年
	} else
		System.out.println("It is not a leap year");	//不是闰年

	}
}

 结果

 

 if语句的嵌套

   前面讲过三种形式的条件语句,这三种形式的条件语句都可以嵌套条件语句。 

例3.5 

import java.util.Scanner;//导入输出函数需要用到的包
public class SSS5 {            //创建主类
	public static void main(String[] args) {//主方法
	int iyear;  //创建整形变量,保存输入的年份
	Scanner sc=new Scanner(System.in);//创建扫描器
	System.out.println("please input number");   //输出结果
	iyear = sc.nextInt();//控制台输入一个数字
	if(iyear%4 ==0) {//如果能被4整除
		if(iyear%100 ==0) {//如果能被100整除
			if(iyear%400 == 0 ) //  如果能被400整除
				System.out.println("It is a leap year");//是闰年
			else
				System.out.println("It is not a leap year");	//不是闰年
		}else 
				System.out.println("It is a leap year");//是闰年
	} else
		System.out.println("It is not a leap year");	//不是闰年

	}
}

结果 

 例3.6

 代码

import java.util.Scanner;   导入输出函数需要用到的包
public class SSS6 {//创建类
	public static void main(String[] args) {   //主函数
		// TODO Auto-generated method stub
		int iyear;                        //创建整形变量,保存输入的年份
		Scanner sc=new Scanner(System.in);   //创建扫描器
		System.out.println("please input number");//输出please input number
		iyear = sc.nextInt();//控制台输入一个数字
		if(iyear%4 ==0&&iyear % 100 != 0||iyear%400 == 0)//如果iyear可以被4整除并且不能被100整除,或者iyear可以被400整除
			System.out.println("It is a leap year");//是闰年
		else System.out.println("It is not a leap year");	//不是闰年
			
	}

}

 结果

 

3.2.2switch多分支语句 

      Switch语句中参数必须是整型、字符型、枚举类型或字符串类型,常量值1~n必须是与参数兼容的数据类型,switch语句首先计算参数的值,如果参数的值和某个case后面的常量表达式相同,则执行该case语句后的若干个语句,直到遇到break语句为止。此时如果该case语句中没有break语句,将继续执行后面case中的若干个语句,直到遇到break语句为止。若没有任何一一个常量表达式与参数的值相同,则执行default后面的语句。
break的作用是跳出整个switch语句。
defult语句是可以不写的,如果它不存在,而且swich语句中表达式的值不与任何ca的常量值相同,switch则不做任何处理。

 例3.7 

 代码

public static void main(String[] args) {//主函数
		int week = 2; //定义int型变量week
		switch (week){//指定switch语句的表达式为变量week 
		case 1: //定义case语句中的常量为1
		System.out.println("Monday");// 输出信息 Monday
		break;       //跳出循环
		case 2:// 定义case语句中的常量为2
		System.out.println("Tuesday"); break;//输出结果,跳出循环
		case 3:// 定义case语句中的常量为3
		System.out.println("Wednesday"); break;//输出结果,跳出循环
		case 4: // 定义case语句中的常量为4
		System.out.println("Thursday"); break;//输出结果,跳出循环
		case 5://定义case语句中的常量为5
		System.out.println("Friday");break; //输出结果,跳出循环
		case 6:// 定义case语句中的常量为6
		System.out.println("Saturday"); break;//输出结果,跳出循环
		case 7:// 定义case语句中的常量为7
		System.out.println("Sunday"); break;//输出结果,跳出循环
		default: // default语句,如果week不是1~7之间的数字,则执行此行代码
		System.out.println("Sorry,I don't Know");  //输出结果,跳出循环
		}
		}
}

 结果

 例3.8

代码

import java.util.Scanner;//导入输出函数需要用到的包
public class SSS8 {//创建类
	public static void main(String[] args) {//主函数
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);//创建System对象,用于进行输入
		   System.out.println("请输入成绩");// 输出信息 break;
		   int grade=sc.nextInt();//获取键盘的输入
		   switch(grade) {              //switch语句
		   case 10:            // 定义case语句中的常量为10
		   case 9: System.out.println("成绩为优"); break;// 定义case9.10语句中的常量为优
		   case 8:  System.out.println("成绩为良"); break;// 定义case8语句中的常量为良
		   case 7:// 定义case5语句中的常量
		   case 6:System.out.println("成绩为中"); break;// 定义case6语句中的常量为中
		   case 5:// 定义case5语句中的常量
		   case 4:// 定义case4语句中的常量
		   case 3:// 定义case3语句中的常量
		   case 2:// 定义case2语句中的常量
		   case 1:// 定义case1语句中的常量
		   case 0:System.out.println("成绩为差"); break;// 定义case0语句中的常量为差
		   default:System.out.println("成绩无效"); break;//反之成绩无效
		   }
	}

}

 结果

 例3.9

 代码

public static void main(String[] args) {//主函数
		// TODO Auto-generated method stub
		String str="明日科技"; //定义case语句中的常量明日科技
	switch(str){ //switch 语句
		case "明日": //定义case语句中的常量1 
		System.out.println("明日图书网www.mingribook.com");//输出信息 break;
		case"明日科技": //定义case语句中的常量明日科技
			System.out.println("吉林省明日科技有限公司"); //输出信息 
		break;	//break 语句
		default:	//default 语句
		System.out.println("以上条件都不是。"); //输出信息
	}

}
}

结果

 3.3循环语句

3.3.1 while循环语句

 例3.10

 代码

 

 结果

3.3.2do...while循环语句

    do...while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立再执行循环体,而do... while循环语句则先执行一次循环后,再判断条件是否成立。也就是说d...while循环语句中“{}”中的程序段至少要被执行一次。
do.while语句与while语句的一个明显区别是d..whil语句在结尾处多了一一个分号 (;)。根据d..whie循环语句的语法特点总结出的d... while循环语句的执行流程

 

 例3.11 

 代码

public class CYcle {   //创建主类
	public static void main(String[] args) {    //主方法
		// TODO Auto-generated method stub
		int a=100;//声明Int型变量a并赋初值100
		  while (a==60)//指定进入循环体条件
		  {
		    System.out.println("ok1");//while语句循环体
		    a--;      //算法递减
		  }
		  int b=100;//声明int型变量b并赋初值100
		  do {//do...while语句循环体
		    System.out.println("ok2");//条件不成立时输出的信息
		   b--;              //算法递减
		  } while(b==60);//指定循环结束条件  
	}
}

结果 

3.3.3while与do...while比较

 例3.12 

代码 


	public static void main(String[] args) {       //主函数
		int i=0,j=0;								//定义i,j的初值
		System.out.println("before do_while j="+ j); //输出外循环值
		do{									//执行do while 内循环
		j++;										//执行j++
		}while (i > 1);							//内循环判断i条件大于1
		System.out.println("after do_while j=" + j);//输出外循环值计算的值

	}

}

结果 

  例3.13

代码

public static void main(String[] args) {       //主函数
		int i=0,j=0;                              //定义i,j的初值
		System.out.println("before while j=" + j); //输出外循环值
		while (i > 1) {                              //执行 while 内循环
		j++;                                         //执行j++
		System.out.println("after while j=" + j);//输出外循环值计算的值

	}
	}
	}

 结果

3.3.4 for 循环 语句

          for循环是Java程序设计中最有用的循环语句之一。 一个 for循环可以用来重复执行某条语句,直到某个条件得到满足。
表达式1:该表达式通常是-个赋值表达式,负责设置循环的起始值,也就是给控制循环的变量赋初值。
表达式2:该表达式通常是一个关系表达式,用控制循环的变量和循环变量允许的范围值进行比较。
表达式3:该表达式通常是一一个赋值表达式,对控制循环的变量进行增大或减小。

 例3.14

代码

	public static void main(String[] args) {//主函数
		 int sum = 0; int i;              //定义i,sum的初值
		  for (i = 1; i <= 100; i++){     // for循环语句
		  sum += i;                         //执行sum+=i
		  }
		  System.out.println("the result :"+ sum);//输出+sum的值
	}

}

结果 

 3.3.5 foreach语句

 foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而任何foreach语句都可以改写为for语句版本。foreach 并不是一个关键字, 习惯上将这种特殊的 for语句格式称之为foreach语句。foreach语向在遍历数组等方面为程序员提供了很大的方便。 

例3.15 

代码

 结果

3.3.6循环语句的嵌套 

例3.16 嵌套 

 代码

结果

3.4 跳转语句 

3.4.1break跳出循环语句  

      跳转语句包含两方面的内容,一方面是控制循环变量的变化方式,也就是让循环判断中的逻辑关系表达式变成false,从而达到终止循环的效果;一方面 是控制循环的跳转。控制循环的跳转需要用到breakcontiue两个关键字,这两条跳转语句的跳转效果不同,break 是中断循环,continue是直接执行下一次循环。
 

例3.17 

代码

结果

 例3.18

代码

 结果

 例3.19 

 代码


	public static void main(String[] args) {//主函数
		// TODO Auto-generated method stub
		Loop: for (int i=0; i<3;i++){//在for循环前用标签标记
			for (int j =0; j<6;j++) {//定义j的初值,判断条件
			if (j== 4) {// 如果j等于4的时候就结束外层循环
			break Loop;// 跳出 Loop 标签标记的循环体
			}
			System.out.println("i="+i+"j="+ j);//输出结果
	}

}
}

 结果

 

 3.4.2  continue语句


     continue语句是针对break语句的补充。continue 不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue语句后,首先执行循环的增量部分,然后进行条件测试。在while和do.. .while循环中,continue 语句使控制直接回到条件测试部分。
 

例3.20

使用continue语句跳出循环 

代码 

 结果

 流程图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值