java條件判斷


條件判斷

java語言和C 語言類似,主要包括三種基本的控制流結構:

1. 程序順序執行

2. 程序的判斷結構

3. 程序的循環結構

如果把前面所學習的關鍵字理解成java語言的詞匯量的話,那么結構化程序設計就是java語言所謂的”語法”了,這種跟計算機溝通的語言很簡單。

前面章節中我們提過,java是以分號(;)作為一個語句的結束的,與換行符沒有關系,任何一句表達式后面都必須帶有一個分號(;),這樣才算正常結束,否則會報語法錯誤,例如:

int a=100;
System.out.println(a);

以上都成為單條語句,而把多個語句放到一個形如 “{...代碼...}”這樣代碼塊中,成為語句塊,就是以左大括號“{”開始,以右大括號結束“}”的代碼我們成為語句塊,左右大括號必須成對出現,語句塊可以互相嵌套。語句塊可以作為一個整體,類似把多個語句塊組合成為一個語句塊。我們在代碼中可以任意使用包含多個語句成為一段語句塊,有時也稱為程序塊。但是在一些情況下,大括號是不可缺少的,比如定義一個類的時候,或者定義一個普通方法時,后面就必須要使用大括號,包住一段語句塊。例如以下的:

public class Abc {//這個是必須的
   public static void main(String[] args) {//這個是必須的
      float a = 346.756565f;
      //這個大括號可以刪除
      {
         int b = (int) a + 10; // 將 a 轉換為整型
         System.out.println(b);
      }
   }
}

下面我們講到的條件判斷和循環判斷的語法是會大量使用到程序塊。

判斷邏輯是我們生活中最常見的邏輯判斷,計算機來執行跟人類思維也是極為類似的:如果[條件成立]就怎樣做,否則就那樣做。可以這么說,計算機最擅長的就是判斷true/false了。

一、if-else 語句

if語句是最常見的判斷語句,通過對條件(conditional)的判斷覺得程序的走向。其基本格式如下:

if(條件表達式)

語句1

else

語句2

在執行該判斷語句前,都是先執行了條件表達式的語句,條件表達式的返回結果必須是布爾值(boolean),根據條件表達式的返回,如果是true,那么就執行語句1的內容,如果是false就執行else后面的語句2。如下面這個例子:

int  i=1;
if(i>10)
  System.out.println(i+"大於10");
else
  System.out.println(i+"不大於10");

先定義了整型i並賦值1,然后在執行if里面的條件判斷式i是否大於10,返回的結果是false,所以執行的是else后面的語句。

在上面的格式中, else是可選部分,所以最簡單的條件判斷式如下:

if(條件表達式)

語句1

如下面這個例子:

int  i=1;
if(i>10)
   System.out.println(i+"大於10");

由於條件判斷是false,所以這個程序不會輸出任何內容。也正是因為else是可選部分,在嵌套使用的時候就會出現理解上的問題,有時候我們面對下面這個例子的時候就會感覺不清晰了

int i = 1;
if (i > 10)
   if (i < 5)
       System.out.println(i + "小於5");
   else
       System.out.println(i + "不大於10");

else是對應那一個if呢?java是與最近一個if配對的。程序員在寫代碼時,適當的縮進代碼也可以提高代碼的可讀性,當然我們有更好的解決辦法。

if和else后面可以跟着語句,當然也可以跟着語句塊,其格式如下:

if(條件表達式){

語句塊1

}else{

語句塊2

}

建議大家在寫if語句時,就算后面只有一個語句,也可以使用大括號包住,形成語句塊,這樣可以提高程序的可讀性,如上面的例子,可以修改成為這樣:

if (i > 10) {
    if (i < 5) {
        System.out.println(i + "小於5");
    } else {
        System.out.println(i + "不大於10");
   }
}

二、else-if 語句

有時候條件判斷不止兩個,可能就需要使用else-if語句了,其語法格式如下:

if(條件表達式)

語句1

else if(條件表達式)

語句2

else if(條件表達式)

語句3

else if(條件表達式)

語句4

...

else

語句

這樣的語句在我們以后的編程中會經常用到,判斷的過程是從上往下的判斷條件表達式,如果第一個返回的是false就會判斷第二個,依次類推,但是如果其中一個返回了true,那么就會執行后面的語句,然后整個else-if語句就會退出,后面如果還有else-if語句也不會在去判斷執行的了。我們常常也會在最后面添加一個else語句,當然這也是可選的,這樣的效果就是如果上面的所有的if判斷都是false,那么就會執行else后面的語句。像上面的if-else一樣,后面也是可以跟着語句塊的,為了增強程序的可讀性,我們后面也常常會使用語句塊。格式如下:

if(條件1){

條件1==true時執行的邏輯

}else if(條件2){

條件2==true時執行的邏輯

}else if(條件n){

條件n==true時執行的邏輯

}else{

以上條件均不滿足而執行的默認的邏輯

}

下面我們具幾個實現,比如我們要判斷用戶年齡小於16歲時不允許登陸游戲網站,那么我們可以使用以下代碼:

int uage = 17;
if (uage < 18) {
   System.out.println("Sorry,請關注學業!");
} else {
   System.out.println("歡迎登陸!");
}
int result=85;//成績  
if(result>90){
  System.out.println("優秀");
}else if(result>80){
  System.out.println("良好");
}else if(result>60){
  System.out.println("合格");
}else{
  System.out.println("不合格");
}

if判斷也可以嵌套使用,也就是在語句塊里也可以包含一個if判斷表達式,如下面這個例子。其中Scanner是獲得用戶輸入對象,請看下面這個例子:

import java.util.Scanner;
 public class Tt {
   public static void main(String[] args) {
      int num0;//第一個數
      int num1;//第二個數
      int type;//計算類型
 
      System.out.print("*"請輸入num0: "*");
      Scanner scr = new Scanner(System.in);
      num0 = scr.nextInt();//程序會在此等待用戶的輸入
 
      System.out.print("*"請輸入num1: "*");
      scr = new Scanner(System.in);
      num1 = scr.nextInt();
System.out.print("*"請輸入計算類型(0表示加 ; 1表示減 ; 2表示乘  ; 3表示除): "*");
      scr = new Scanner(System.in);
      type = scr.nextInt();
 
if (type == 0) {
      System.out.println(num0 + "*"+"*" + num1 + "*" ="*" + (num0 + num1));
   } else if (type == 1) {
      System.out.println(num0 + "*"-"*" + num1 + "*" ="*" + (num0 - num1));
   } else if (type == 2) {
      System.out.println(num0 + "*"*"*" + num1 + "*" ="*" + (num0 * num1));
   } else if (type == 3) {
         // 除法,使用嵌套的if語句判定除數不能為0
       if (num1 == 0) {
          System.out.println("*"除數不能為0"*");
      } else {
          System.out.println(num0+"*"/"*"num1+ "*" ="*" + (num0 / num1));
      }
 
   } else {
   // 非法輸入
     System.out.println("*"您的輸入有誤!計算類型只能是[0,1,2,3]"*");
   }
   }
}

在這個程序中用了Scnner獲得用戶的輸入,程序運行到scr.nextInt()的時候會停下來,等待用戶的輸入,用戶輸入后按回車程序才會繼續往下運行,在程序中我們對除法的判斷又嵌套了一個除數不能為0的判斷。

三、switch選擇語句

switch語句是另一種判斷語句的寫法,這種語句在選擇時是對case子句的值進行相等測試,其功能性其實和if判斷語句一樣,僅僅只是書寫的方式不同,兩者之間可以互通,語法上面沒有if語句簡介。其具體的語法格式如下:

switch(被判斷的變量)

{

case 條件1:

執行條件1的邏輯

break;

case 條件2:

執行條件1的邏輯

break;

case n:

執行條件n的邏輯

break;

default:

以上條件均不滿足而執行的默認的邏輯

}

switch后面的只是被判斷的變量,當與case后面的條件相等是,那么case后面的語句就會執行,最后面的default是可選項,可根據你的業務邏輯需要決定是否添加,功能類似else語句,就是上面所有的case條件都不滿足時就會執行default后面的語句。

值得注意的是,在JDK 7以前參加被判斷的變量的類型只可以是int, byte, char, short等數據類型,但是在JDK 7以后,被判斷的變量的類型被增強支持對字符串String的判斷。如果你還是使用JDK 6就要特別注意這一點了。

一般來說,switch與case成功匹配,還會繼續順序執行以后所有的程序代碼,因此一般都要在判斷成功后面添加break語句跳出判斷語句塊。有關break關鍵字的詳細說明我們會在后面的章節中說明。

看看這個例子:已知變量int month=1,使用switch判斷語句,如果month等於1就輸出"一月",等於2就輸出"二月",如此類推。實現代碼如下:

int month=4; 
switch(month){
      case 1:
         System.out.println("一月");
         break;
      case 2:
         System.out.println("二月");
         break;
      case 3:
         System.out.println("三月");
         break;
      case 4:
         System.out.println("四月");
         break;
           //...中間的5~12用戶自己補充。
      default:
         System.out.println("month只能是1~12");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM