程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> JAVA入門教程:流控制

JAVA入門教程:流控制

編輯:JAVA編程入門知識
  與 C、 C++相 同 ,Java程 序 通 過 流 控 制 來 執 行 程 序 流 ,完 成 一 定 的 任 務 。 程 序 流 是 由 若 干
  個 語 句 組 成 的 。 語 句 可 以 是 單 一 的 一 條 語 句 ( 如 c=a+b; ),也 可 以 是 用 大 括 號 {}括 起 來 的 一 個
  復 合 語 句 。
  
  下 面 我 們 分 別 來 介 紹 Java中 的 流 控 制 語 句 ,包 括
  
  1.分 支 語 句 :if-else, break, switch, return.
  
  2.循 環 語 句 :while, do-while, for, continue.
  
  3.例 外 處 理 語 句 :try-catch-finally, throw
  
  最 後 我 們 簡 單 介 紹 一 下 注 釋 語 句 。
  
  § 4.1分 支 語 句
  
  分 支 語 句 提 供 了 一 種 控 制 機 制 ,使 得 程 序 的 執 行 可 以 跳 過 某 些 語 句 不 執 行 ,而 轉 去 執
  行 特 定 的 語 句 。
  
  4.1.1條 件 語 句 if-else.
  
  if-else語 句 根 據 判 定 條 件 的 真 假 來 執 行 兩 種 操 作 中 的 一 種 , 它 的 格 式 為 :
  
  if(boolean-eXPression)
  statement1;
  [else
  statement2;]
  
  1.布 爾 表 達 式 boolean-expression是 任 意 一 個 返 回 布 爾 型 數 據 的 表 達 式 (這 比 C、 C++的 限 制
  要 嚴 格 )。
  
  2.每 個 單 一 的 語 句 後 都 必 須 有 分 號 。
  
  3.語 句 statement1,statement2可 以 為 復 合 語 句 ,這 時 要 用 大 括 號 {} 括 起 。 建 議 對 單 一 的 語 句
  也 用 大 括 號 括 起 ,這 樣 程 序 的 可 讀 性 強 ,而 且 有 利 於 程 序 的 擴 充 (可 以 在 其 中 填 加 新 的 語 句
  )。 {}外 面 不 加 分 號 。
  
  4.else子 句 是 任 選 的 。
  
  5.若 布 爾 表 達 式 的 值 為 true,則 程 序 執 行 statement1,否 則 執 行 st atement2。
  
  6.if-else語 句 的 一 種 特 殊 形 式 為 :
  
  if(expression1){
  statement1
  }else if (expression2){
  statement2
  }……
  }else if (expressionM){
  statementM
  }else {
  statementN
  }
  @@@[
  else子句不能單獨作為語句使用,它必須和if配對使用。else總是與離它最近的if配對
  。可以通過使用大括號{}來改變配對關系。
  7.舉例:
  例4.1 比較兩個數的大小,並按從小到大的次序輸出。
  @@@[
  public class CompareTwo{
  public static void main( String args[] ){
  double d1=23.4;
  double d2=35.1;
  if(d2>=d1)
  System.out.println(d2+" >= "+d1);
  else
  System.out.println(d1+" >= "+d2);
  }
  }
  運行結果為:
  C:>java CompareTwo
  
  35.1 >= 23.4
  
  例 4.2 判 斷 某 一 年 是 否 為 閏 年 。
  
  閏 年 的 條 件 是 符 合 下 面 二 者 之 一 :① 能 被 4整 除 ,但 不 能 被 10 0整 除 ;② 能 被 4整 除 ,又 能 被
  100整 除 。
  
  public class LeapYear{
  public static void main( String args[] ){
  int year=1989; //method 1
  if( (year%4==0 && year%100!=0) (year%400==0) )
  System.out.println(year+" is a leap year.");
  else
  System.out.println(year+" is not a leap year.");
  year=2000; //method 2
  boolean leap;
  if( year%4!=0 )
  leap=false;
  else if( year%100!=0 )
  leap=true;
  else if( year%400!=0 )
  leap=false;
  else
  leap=true;
  if( leap==true )
  System.out.println(year+" is a leap year.");
  else
  System.out.println(year+" is not a leap year.");
  year=2050; //method3
  if( year%4==0){
  if( year%100==0 ){
  if( year%400==0)
  leap=true;
  else
  leap=false;
  }else
  leap=false;
  }else
  leap=false;
  if( leap==true )
  System.out.println(year+" is a leap year.");
  else
  System.out.println(year+" is not a leap year.");
  }
  }
  運行結果為
  C:>java LeapYear
  1989 is not a leap year.
  2000 is a leap year.
  2050 is not a leap year.
  
  該 例 中 ,方 法 1用 一 個 邏 輯 表 達 式 包 含 了 所 有 的 閏 年 條 件 ,方 法 2使 用 了 if-else語 句 的 特 殊
  形 式 ,方 法 3則 通 過 使 用 大 括 號 {}對 if-else進 行 匹 配 來 實 現 閏 年 的 判 斷 。 大 家 可 以 根 據 程 序 來
  對 比 這 三 種 方 法 ,體 會 其 中 的 聯 系 和 區 別 ,在 不 同 的 場 合 選 用 適 合 的 方 法 。
  
  4.1.2多 分 支 語 句 switch
  
  switch 語 句 根 據 表 達 式 的 值 來 執 行 多 個 操 作 中 的 一 個 ,它 的 一 般 格 式 如 下 :
  
  switch (expression){
  case value1 : statement1;
  break;
  case value2 : statement2;
  break;
  …………
  case valueN : statemendN;
  break;
  [default : defaultStatement; ]
  }
  
  1.表 達 式 expression可 以 返 回 任 一 簡 單 類 型 的 值 (如 整 型 、 實 型 、 字 符 型 ),多 分 支 語 句 把
  表 達 式 返 回 的 值 與 每 個 case子 句 中 的 值 相 比 。 如 果 匹 配 成 功 ,則 執 行 該 case子 句 後 的 語 句 序
  列 。
  
  2.case子 句 中 的 值 valueI必 須 是 常 量 ,而 且 所 有 case子 句 中 的 值 應 是 不 同 的 。
  
  3.default子 句 是 任 選 的 。 當 表 達 式 的 值 與 任 一 case子 句 中 的 值 都 不 匹 配 時 ,程 序 執 行
  default後 面 的 語 句 。 如 果 表 達 式 的 值 與 任 一 case子 句 中 的 值 都 不 匹 配 且 沒 有 default子 句 ,則 程
  序 不 作 任 何 操 作 ,而 是 直 接 跳 出 switch語 句 。
  
  4.break語 句 用 來 在 執 行 完 一 個 case分 支 後 ,使 程 序 跳 出 switch語 句 ,即 終 止 switch語 句 的 執 行
  。 因 為 case子 句 只 是 起 到 一 個 標 號 的 作 用 ,用 來 查 找 匹 配 的 入 口 並 從 此 處 開 始 執 行 ,對 後 面
  的 case子 句 不 再 進 行 匹 配 ,而 是 直 接 執 行 其 後 的 語 句 序 列 , 因 此 應 該 在 每 個 case分 支 後 ,要 用
  break來 終 止 後 面 的 case分 支 語 句 的 執 行 。
  
  在 一 些 特 殊 情 況 下 ,多 個 不 同 的 case值 要 執 行 一 組 相 同 的 操 作 ,這 時 可 以 不 用 break。
  
  5.case分 支 中 包 括 多 個 執 行 語 句 時 ,可 以 不 用 大 括 號 {}括 起 。
  
  6.switch語 句 的 功 能 可 以 用 if-else來 實 現 ,但 在 某 些 情 況 下 ,使 用 switch語 句 更 簡 煉 ,可 讀 性 強
  ,而 且 程 序 的 執 行 效 率 提 高 。
  
  7.舉 例 :
  
  例 4.3.根 據 考 試 成 績 的 等 級 打 印 出 百 分 制 分 數 段 。
  
  public class GradeLevel{
  public static void main( String args[] ){
  System.out.println(" ** first situation **");
  char grade='C'; //normal use
  switch( grade ){
  case 'A' : System.out.println(grade+" is 85~100");
  break;
  case 'B' : System.out.println(grade+" is 70~84");
  break;
  case 'C' : System.out.println(grade+" is 60~69");
  break;
  case 'D' : System.out.println(grade+" is <60");
  break;
  default : System.out.println("input error");
  }
  System.out.println(" ** second situation **");
  grade='A'; ∥creat error without break statement
  switch( grade ){
  case 'A' : System.out.println(grade+" is 85~100");
  case 'B' : System.out.println(grade+" is 70~84");
  case 'C' : System.out.println(grade+" is 60~69");
  case 'D' : System.out.println(grade+" is <60");
  default : System.out.println("input error");
  }
  System.out.println(" ** third situation **");
  grade='B'; ∥several case with same operation
  switch( grade ){
  case 'A' :
  case 'B' :
  case 'C' : System.out.println(grade+" is >=60");
  break;
  case 'D' : System.out.println(grade+" is <60");
  break;
  default : System.out.println("input error");
  }
  }
  }
  運行結果為
  C:>java GradeLevel
  **** first situation ****
  C is 60~69
  **** second situation ****
  A is 85~100
  A is 70~84
  A is 60~69
  A is <60
  input error
  **** third situation ****
  B is >=60
  
  從 該 例 中 我 們 可 以 看 到 break
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved