---------------------- 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培训、期待与您交流! ----------------------