java條件判斷

條件判斷

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

1. 程序順序執行程序員

2. 程序的判斷結構編程

3. 程序的循環結構學習

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

前面章節中咱們提過,java是以分號(;)做爲一個語句的結束的,與換行符沒有關係,任何一句表達式後面都必須帶有一個分號(;),這樣纔算正常結束,不然會報語法錯誤,例如:網站

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

以上都成爲單條語句,而把多個語句放到一個形如 「{...代碼...}」這樣代碼塊中,成爲語句塊,就是以左大括號「{」開始,以右大括號結束「}」的代碼咱們成爲語句塊,左右大括號必須成對出現,語句塊能夠互相嵌套。語句塊能夠做爲一個總體,相似把多個語句塊組合成爲一個語句塊。咱們在代碼中能夠任意使用包含多個語句成爲一段語句塊,有時也稱爲程序塊。可是在一些狀況下,大括號是不可缺乏的,好比定義一個類的時候,或者定義一個普通方法時,後面就必需要使用大括號,包住一段語句塊。例如如下的:spa

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了。code

1、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");
   }
}

2、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的判斷。

3、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");
}
相關文章
相關標籤/搜索