当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java入门

JAVA程序员必读:基础篇(2.c)语言基础


  语言基础
  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 < arrayOfInts.length; i++) {
  System.out.print(arrayOfInts[i] + " ");
  }
  System.out.println();
  }
  }
  这个程序的输出为: 32 87 3 589 12 1076 2000 8 622 127.
  这里注意你可以在for循环的初始化语句中声明一个本地变量。这个变量的作用域只是在for语句的块中,它可以用在终止条件语句和增量表达式中。如果控制for循环的变量没有用在循环的外部,最好的方法是在初始化表达式中声明这个变量。例如i、j、k等经常用来在for控制语句中,在for循环的初始化表达式中声明它们来限制它们的生命周期以减少错误
  3.4.3 if-else语句
  if语句可以使程序根据一些条件有选择地执行语句。举个例子,假如你的程序根据boolean变量DEBUG的值来打印了调试信息。如果DEBUG是true,你的程序就打印出调试信息,比如变量x的数值;或者就不打印。具体的程序如下:
  if (DEBUG) {
  System.out.println("DEBUG: x = " + x);
  }
  上面是一个简单的if语句的例子。总得说来,if语句的语法格式为:
  if (表达式) {
  语句(参数)
  }
  如果你想在if判断表达式为false的时候执行不同的语句,你可以使用else语句。举个另外的例子吧,假如你的程序需要执行不同的工作,主要是根据用户是点击OK键还是击警告窗口中的其它按钮。你可以使用if和else语句来实现这个目的:
  . . .
  // response is either OK or CANCEL depending
  // on the button that the user pressed
  . . .
  if (response == OK) {
  // 在这里添加执行OK动作的代码
  } else {
  // 在这里添加执行Cancel动作的代码
  3.4.3 if-else语句
  如果if部分为false,则执行else块。另外一种else语句的格式是else if,它根据执行另外的表达式执行语句。一个if语句可以跟着任意个else if语句,但只能有一个else语句。下面是一个例程IfElseDemo,它根据测试分数的数值来指定一个等级:90%或者更高为A,80%或者更高为B等等。
  public class IfElseDemo {
  public static void main(String[] args) {
  int testscore = 76;
  char grade;
  if (testscore >= 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的数值,然后计算适当的
相关内容
赞助商链接