黑马程序员--Java学习04--流程控制语句

本文详细介绍了Java流程控制语句,包括块作用域语句、分支流程控制语句(if-then、if-then-else、switch)、循环语句(for、while、do-while),以及break和continue语句的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

流程控制语句

       任何一种程序设计语言都将会提供一整套完备的流程控制语句,以满足解决各种问题的需要。Java语言吸纳了C/C++语言的绝大部分流程控制语句,并扩充了一些语句的处理功能,例如,循环控制结构,break语句和continue语句等。

一、块作用域语句

       块作用域语句又被称为复合语句,其格式为:用一堆花括号将若干条语句括起来,目的是从语法上可以将多条语句解释成一条语句。例如:

<span style="font-size:14px;">{
     int temp;//交换两个数的值
     temp =a;
     a=b;
     b=temp;
}</span>

     在Java语句中,块作用域语句可以嵌套,但不允许在嵌套的两层中声明同名的变量。例如:

<span style="font-size:14px;">{
	int c;
	......
	{
		int c;//编译出错,重定义错误
		c=a;
		if (a<b)
		{
			c=b;
		}
	}
}
</span>

二、分支流程控制语句

    顾名思义,分支流程控制语句具有根据不同需求有选择的执行某些语句的功能,Java语言完全延续了 C/C++语句中的分支控制流程语句,包含if-then、if-then-else和switch3种形式的语句。

 1、if-then语句

      if-then 是分支流程控制语句中最简单的一种形式。其语法格式为: 

<span style="font-size:14px;">if(前提条件) 语句;</span>

    其中,“前提条件“是决定是否执行后面”语句“的条件,它将采用逻辑表达式形式描述,结果必须为boolean类型;”语句“是前提 条件成立时应该执行的语句。语法规则要求这里只能执行一条语句,如果希望执行多条语句,需要利用一对花括号将他们构成一条块作用域语句。

    if-then 语句的执行过程是:首先计算“前提条件”,如果结果为true,执行“语句”;否则不执行任何操作。例如:

<span style="font-size:14px;">abs = a;
if (a<0)
{
	abs = -a;
}</span>

2、if-then-else语句

    if-then只在“前提条件’成立时,执行特定的语句;否则,不执行任何操作。而if-then-else语句将根据”前提条件“的判断结果分别执行不同的特定语句,其语法格式为:

<span style="font-size:14px;">if(前提条件) 语句1;
else 语句2;
</span>

其效果是:若”前提条件“成立,则执行语句1,若不成立,则执行语句2;例如:

<span style="font-size:14px;">if(x<=y)
{
	System.out.println(x+","+y);
}
else 
{
	System.out.println(y+","+x);
}</span>

此语句的效果是按大小顺序输出x,y的值。

if-then-else语句中也可以嵌套,但是要注意与else与哪个if匹配,应注意嵌套时画括号的应用,避免出错,例如:

<span style="font-size:14px;">if (a==b)
	if (b==c)
	{
		System.out.println("a==c");
	}
	else {
		System.out.println("a<>b");
	}
</span>

这条语句中的else与第二个if相匹配,但是下面的程序段中的else将于第一个if相匹配。

<span style="font-size:14px;">if (a==b)
{
	if (b==c)
	{
		System.out.println("a==c");
	}
}
else {
		System.out.println("a<>b");
	}</span>

注意花括号的应用。

if语句的扩充形式,如图:


3、switch 语句

     switch 语句是一种具有处理多分支能力的流程控制语句。它可以通过给定表达式的计算结果,从多个执行分支中选择执行其中的一个分支。其语法格式如下:

<span style="font-size:14px;">switch (表达式)
{
	case 常量值1:
		若干个语句
		break;
	case 常量值2:
		若干个语句
		break;
	.....
	case 常量值n:
		若干个语句
		break;
	default: 
		若干个语句;

}</span>

      switch语句中表达式的值必须是整型或字符型;常量值1到常量值n必须也是整型或字符型。switch语句首先计算表达式的值,如果表达式的值和某个case后面的值相同,就执行该case里的若干个语句直到遇到break语句停止;如果某个case后面没有使用break语句,一旦表达式的值和该case后面的值相同,程序不仅执行该case后面的语句,而且执行后记case里面的若干个语句,直到遇到break为止。若没有一个常量值与表达式的值相同,则执行default后面的若干个语句。其中default是可选的,如果它不存在,并且switch语句中的表达式的值不与任何case的常量值相同,那么switch语句就不会进行任何处理。

     需要注意的是:在同一个switch语句中,case的常量必须互不相同。例如:

<span style="font-size:14px;">public class Test
{
	public static void main(String[] args)
	{
		int x=2,y=1;
		switch (x+y)
		{
			case 1:
				System.out.println(x+y);
				break;
			case 3:
				System.out.println(x+y);
			case 0:
				System.out.println(x+y);
				break;
			default :
				System.out.println("没有匹配的"+(x+y));
		
		}
	}
}</span>

改程序的运行结果为:

三、循环语句

   1.for循环语句

    for语句是java 程序设计中最有用的循环语句之一,for语句的格式如下:

<span style="font-size:14px;">for (表达式1;表达式2 ;表达式3 )
{ 若干语句
}
</span>

      》for语句中的复合语句:{若干语句},称为循环体。

     》表达式1负责完成变量的初始化。

     》表达式2是值为boolean型的表达式,称为循环条件。

     》表达式3用来修整变量,改变循环条件。

     for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作;再判断表达式2的值,若表达式2的值为true,则执行循环体;执行完循环体之后紧接着计算表达式3,以便改变循环条件,这样一轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2的值仍为true,则继续循环,否则跳出整个for语句执行后面的语句,如图:

例:利用for循环计算5+55+555+5555+......的前10项和。

<span style="font-size:14px;">public class Test
{
	public static void main(String[] args)
	{
		long sum=0,a=5,item=a,n=10,i=1;//sum用于存放求和结果,item用于存放计算过程中和值
		for(i=1;i<=n;i++)
		{
			sum=sum+item;
			item=item*10+a;
		}
		System.out.println(sum);
	}
}</span>

输出结果为:


2、while循环

一般格式

<span style="font-size:14px;">while (表达式)
{
	若干语句
}
</span>

其执行流程图为:


3、do-while循环

一般格式:

<span style="font-size:14px;">do
{
	若干语句
}
while (表达式);
</span>

其执行流程图为:

注:do-while循环语句和while循环语句的区别是:do-while的循环体至少被执行一次。

例:用while循环语句计算1+1/2!+1/3!+1/4!+......的前20项。

<span style="font-size:14px;">public class Test
{
	public static void main(String[] args)
	{
		double sum=0,a=1;//sum用于存放最后结果
		int i=1;
		while(i<=20)
		{
			sum=sum+a;
			i=i+1;
			a=a*(1.0/i);
		}
		System.out.println("sum="+sum);//输出所求结果
	}
}
</span>

运行结果为:

四、break和continue语句

     break和continue语句是指用关键字break和continue加上分号构成的语句,例如:

break;

     在循环体中可以使用break语句和continue语句。在一个循环中,比如循环50次的循环语句中,如果在某次循环中执行了break语句,那么整个循环语句就结束。如果在某次循环中执行了continue语句,那么本次循环就结束,既不在执行本次循环中循环体中continue后面的语句,而转入进行下一次循环。

例子如下:

<span style="font-size:14px;">public class Test
{
	public static void main(String[] args)
	{
		int sum=0,i,j;
		for(i=1;i<=10;i++)//计算1+3+5+7+9
		{
			if(i%2==0)
				continue;
			sum=sum+i;
		}
		System.out.println("sum="+sum);
		for(j=2;j<=50;j++)   //求50以内的素数
		{
			for(i=2;i<=j/2;i++)
			{
				if (j%i==0)
				{
					break;
				}
				
			}
			if (i>j/2)
				{
					System.out.println(" "+j+"是素数");
				}
		}
	}
}
</span>

输出结果是:

break和continue还有以下功能,看程序:

<span style="font-size:14px;">class chengfa 
{
	
		//break和continue有作用范围
		//break跳的是当前循环,java具有标注功能可以跳出标号的循环
		w:for(int x=1;x<=9;x++)
		{
			q:for(int y=1;y<=x;y++)
			{
					System.out.print(y+"*"+x+"="+y*x+'\t');
					break q;
					break w;
			}
			System.out.println();
		}
		//continue只能用于循环结构,继续循环,忽略其以下的语句,也可你继续标注的循环
		w:for(int x=1;x<=9;x++)
		{
			q:for(int y=1;y<=x;y++)
			{
					System.out.print(y+"*"+x+"="+y*x+'\t');
					continue w;
			}
			System.out.println();
		}
	}
}
</span>



---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值