Java中的流程控制语句
在本文中,我们可以看到如何用Java实现基本的流控制结构/语句:
决策结构:if , if – else, switch;
**循环块的结构:**do while,while–do,enhanced–for;
循环控制指令:break, continue;
使用控制结构,我们可以编写执行不只是指令线性序列的程序。
在Java中如何使用if–then控制语句
条件流控制结构 if–then,具有以下形式:
if(条件)
语句
或者
if(条件){
语句1;
语句2;
}
其中 条件是一个值为 true或*false *的布尔表达式或变量。例如 30>10或10==30。
在Java中,不接受基于具有数值的表达式或变量的条件。例如,以下表达式在C/C++中有效,但在Java中无效:
int valoare = 10;
if(valoare)
System.out.println("大于0!");
会报编译错误: 不兼容类型 : incompatible types.。
为了说明if then子句,我们确定一个数字是否为负数,如果为负数,则更改其符号:
int negativeNumber = -22;
boolean isNumber = true;
if(isNumber)
System.out.println("It's a number";);
if(negativeNumber < 0)
{
System.out.println("It's a negative one! Change it.");
negativeNumber = (-1) *negativeNumber;
System.out.println(negativeNumber);
}
在Java中如何使用if–then–else控制语句
if–else控制子句的格式如下:
if(条件){
语句1;
语句2;
}
else{
语句3;
语句4;
}
如果我们想知道两个数字的最小值:
int vb1 = 10;
int vb2 = 20;
int min;
if(vb1 < vb2)
min = vb1;
else
min = vb2;
还可以通过条件运算符?:来实现:
条件 ? 条件为true时执行的语句 : 条件为flase时执行的语句
上一个例子变成:
min = vb1 < vb2 ? vb1 : vb2;
在Java中如何使用do–while循环
重复结构do-while实现了一个后处理循环,因为在循环块的末尾检查退出/留在循环中的条件。
结构将至少运行一次循环块中的迭代语句:
do{
语句1;
语句2;
} while(条件);
例如,如果我们想计算N!(前提是N>1)在ado-while中:
// 计算n的阶乘
int nFactorial = 1;
int i = 0;
int n = 5;
do
{
i++;
nFactorial = nFactorial *i;
}while(i < n);
// 输出结果
System.out.println(n+"! = "+nFactorial);
如何在Java中使用while–do循环
重复结构while-do实现一个预处理周期,因为在执行循环块中的第一条语句之前,检查退出/留在循环中的条件:
while(条件){
语句1;
语句2;
}
// 计算n的阶乘
int nFactorial = 1;
int i = 0;
int n = 5;
while (i < 5)
{
i++;
nFactorial = nFactorial *i;
}
System.out.println(n+"! = "+nFactorial);
如何在Java中使用for循环
for重复结构实现了一个预先设置好的循环结构,就像do while一样。for结构效率更高,因为迭代和初始化语句包含在结构中而不是块中:
for(初始化; 条件; 迭代语句){
语句1;
语句2;
}
例如,要计算数组中元素的和:
int[] vector = {1,2,3,4,5};
int sum = 0;
for(int j = 0; j < vector.length; j++)
sum += vector[j];
System.out.println("The sum is "+sum);
在for控制结构中,可以编写多个由(逗号)分隔的迭代和初始化语句:
for(初始化语句1,初始化语句2; 条件; 迭代语句1,迭代语句2){
语句1;
语句2;
}
for语句元素:初始化、迭代和条件是可选的。下一个例子是合法的,但在某些情况下,我们必须决定for循环何时将使用break结束。
for( intialization; ; ) for( ; condition; iteration ) for( ; ; iteration) for( ; ; ) // 死循环
在初始化语句中声明的变量是For块的局部变量,在外部不可见:
for ( int i=0; i<10 ; i++ ) {
}
// compile-error, cannot resolve symbol: i
// 编译错误,无法解决符号:i
System.out.println("value of i: " + i );
如何在Java中使用 增强的for循环
重复的增强的for结构实现了一个预处理循环。这个结构是在Java5.0中引入的,它允许更简单的语法和更快的实现(类似.net中的 foreach形式))。此结构只能用于遍历实现java.lang.Iterable语言接口。
for ( variable: iterable_collection )
{
语句1;
语句2;
}
使用增强型的for重写前面的示例:
sum = 0;
for(int value: vector)
{
suma += value;
}
System.out.println("总和是:"+sum);
如何在Java中使用switch语句
switch条件结构实现了一个具有多个分支的条件结构。它替换了一个比多个 if-then-else 子句更有效的结构。
switch (变量) {
case 常量值1:
语句1;
break;
case 常量值2:
语句2;
break;
...
default:
语句;
}
每个case子句必须用 break指令关闭,因为它提供了退出 switch结构的方法。
例如,通过switch语句测试变量值比通过多个if语句更容易。
int testValue = 2;
switch(testValue)
{
case 1:
System.out.println("值是1");
break;
case 2:
System.out.println("值是2");
break;
case 3:
System.out.println("值是3");
break;
case 4:
System.out.println("值是4");
break;
default:
System.out.println("其他值");
}
通过运行上面的例子,我们得到了这样一条消息: 值是2。
如果我们不使用break指令,那么前面的示例将显示:
值是2 值是3 值是4 其他值
如何在Java中使用 break和continue语句
break语句停止由for、do while、while do实现的当前循环块。另外,如果在switch结构中使用它,它将关闭最后一个case子句。
continue指令将挂起for,do while,while do循环块的当前迭代,并将执行下一次迭代。
例如,让我们确定给定数组中所有元素为正数的和:
int[] intValues = {10,12,5,-4,3,-1,23};
int positiveSum = 0;
for(int j = 0; j < intValues.length; j++)
{
if(intValues[j] < 0) // 如果是负数,则直接进行下一次迭代
continue;
// 计算其他值的和
positiveSum+=valoriInt[j];
}
System.out.println("正数的和为: "+positiveSum);
或者,让我们确定第一次出现的负值:
int[] intValues = {10,12,5,-4,3,-1,23};
int negativeValue = 0;
for(int j = 0; j < intValues.length; j++)
{
if(intValues[j] < 0)
{
// 如果是第一个负数,则保存其值
negativeValue = intValues[j];
// 并终止循环
break;
}
}
System.out.println("第一个负数是"+negativeValue);

