|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
语言基础
3.4 控制流程语句
程序使用控制流程语句来有条件地执行语句、循环语句或者跳转到程序中的其它部分执行语句。这节教程介绍怎样利用比如if-else和while来控制你的程序流程。
当你编写程序的时候,你在文件中键如语句。如果你没有使用控制流程语句,编译器将以从左到右、从上到下的顺序执行这些语句。你可以在你的程序中使用控制流程语句来有条件地执行语句、来重复执行语句块地代码、改变程序执行的顺序等等。比如,在下面的代码段中,if语句就有条件执行了括号中的System.out.println,这里的条件是Character.isUpperCase(aChar)的返回值:
char c;
...
if (Character.isUpperCase(aChar)) {
System.out.println("The character " aChar " is upper case.");
}
JAVA编程语言提供了几个控制流程语句,在下表给出了:
3.4 控制流程语句
控制流程语句的基本格式为:
控制流程语句描述
{
语句(参数)
}
如果块中只有一条语句,大括号{和}并不是必要的。但是这里推荐使用{和},因为代码会更容易阅读,避免在修改代码的时候发生错误。
控制流程语句有:
while和do-while语句
for语句
if-else语句
switch语句
异常处理语句
分支语句
这里注意,虽然goto是一个保留字,它在C语言中也是一个控制流程语句,但是当前JAVA编程语言还不支持这个goto语句。
好吧,我们开始对各个控制流程语句逐个介绍。
3.4.1 while和do-while语句
你可以使用while语句当条件保持为true的时候,持续执行语句块。While语句的通常语法为:
while (expression) {
statement
}
首先,while语句执行表达式,它将返回一个boolean数(true或者false)。如果表达式返回true,while语句执行相应的语句。While语句继续测试表达式并执行块代码直到表达式返回false。
下面给出一个例程WhileDemo,它使用while语句来浏览字符串的各个字符并复制字符串直到程序找到字符g为止:
public class WhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you "
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
while (c != 'g') {
copyToMe.append(c);
c = copyFromMe.charAt( i);
}
System.out.println(copyToMe);
}
}
最后一行打印出来的数值为:Copy this strin.
3.4.1 while和do-while语句
JAVA编程语言提供了另外一个语句,它跟while语句和相似,即do-while语句。Do-while的语法为:
do {
statement(s)
} while (expression);
不象while语句,do-while语句是先执行循环中的语句后再计算表达式的,所以do-while语句就至少执行一次语句。
下面是对上面的程序利用do-while来修改而得的:
public class DoWhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you "
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
do {
copyToMe.append(c);
c = copyFromMe.charAt( i);
} while (c != 'g');
System.out.println(copyToMe);
}
}
最后一行打印出来的数值为:Copy this strin
3.4.2 for语句
for语句提供了一个简便的方法来进行循环。For语句的语法如下:
for (初始条件;终止条件;增量) {
语句
}
初始条件是初始化循环的表达式,它在循环开始的时候就被执行一次。而终止条件决定什么时候终止循环。这个表达式在每次循环的过程都被计算。当表达式计算结果为false的时候,这个循环结束。最后,增量是循环一次增加多少(即步长)的表达式。所有的这些都是可选的。实际上,为了实现无限制的循环,这三个表达式都可以省略。
for ( ; ; ) { // 无限制的循环
...
}
下面是一个例程ForDemo,它使用了一个for语句来打印一个数组的所有元素:
public class ForDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,
2000, 8, 622, 127 };
for (int i = 0; i = 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
}else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " grade);
}
}
程序的输出为:
Grade = C
这时你可以注意到testscore的数值可以满足组合if条件76 >= 70 and 76 >= 60,但是当系统处理组合if语句的时候,一旦条件满足,适当的语句就将被执行(grade = 'C';),并且不需要计算剩余的条件控制就跳出if语句。JAVA编程语言支持运算符?:,它是一个简化的if语句。 下面再看看上面教程中的MaxVariablesDemo程序:
if (Character.isUpperCase(aChar)) {
System.out.println("The character " aChar " is upper case.");
} else {
System.out.println("The character " aChar " is lower case.");
}
下面你可以利用?:运算符来重写这段代码:
System.out.println("The character " aChar " is "
(Character.isUpperCase(aChar) ? "upper" : "lower")
"case.");
如果这个isUpperCase方法返回true,这个?:运算符返回字符串"upper" 。或则,它就返回字符串"lower"
3.4.4 switch语句
使用switch语句可以根据一个整型表达式有条件地执行语句。下面的例程SwitchDemo,声明了一个整型变量month,它的数值代表了月份。这个程序显示了月份的名字,主要是根据month的数值并且使用了switch语句。
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
switch (month) {
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
}
}
这个switch语句计算它的表达式,在这个例子中是计算month的数值,然后计算适当的 |
|