1. 程式人生 > >java基礎:流程控制語句(選擇結構if語句)

java基礎:流程控制語句(選擇結構if語句)

這樣的 執行 錯誤數據 一點 選擇 邏輯運算符 月份 等級 pri

(1)順序結構 從上往下,依次執行

技術分享

Demo:

class ShunXuJieGouDemo {

public static void main(String[] args) {

System.out.println("程序開始了");

System.out.println("我愛Java");

System.out.println("程序結束了");

}

}

(2)選擇結構 按照不同的選擇,執行不同的代碼

Java語言提供了兩種選擇結構語句

if語句

switch語句

if語句:

if語句有三種格式

if語句第一種格式:

if(關系表達式) {

語句體

}

執行流程

首先判斷關系表達式看其結果是true還是false

如果是true就執行語句體

如果是false就不執行語句體

技術分享

Demo:

class IfDemo {

public static void main(String[] args) {

int x = 10;

if(x == 10) {

System.out.println("x等於10");

}

if(x == 20) {

System.out.println("x等於20");

}

System.out.println("over");

}

}

code:

if語句的註意事項:

A:比較表達式無論簡單還是復雜,結果必須是boolean類型

B:if語句控制的語句體如果是一條語句,大括號可以省略;

如果是多條語句,就不能省略。建議永遠不要省略。

C:一般來說:有左大括號就沒有分號,有分號就沒有左大括號

public static void main(String[] args) {

int x = 10;

if(x == 10) {

System.out.println("x等於10");

}

if((x > 5) || (x == 10)) {

System.out.println("x大於或者等於

10");

}

System.out.println("-------------------");

int a = 100;

/*

if(a == 100) {

System.out.println("a的值是100");

}

*/

if(a != 100) {

System.out.println("a的值是100");

System.out.println("over");

}

System.out.println("-------------------");

int b = 100;

if(b != 100); //這裏其實是有語句體的,只不過是空語句體。

//代碼塊

{

System.out.println("b的值是100");

System.out.println("over");

}

}

if語句第二種格式:

if(關系表達式) {

語句體1;

}else {

語句體2;

}

執行流程

首先判斷關系表達式看其結果是true還是false

如果是true就執行語句體1

如果是false就執行語句體2

註意:else後面是沒有比較表達式的,只有if後面有。

技術分享

Demo:

public static void main(String[] args) {

//判斷兩個數據是否相等

int a = 10;

int b = 20;

if(a == b) {

System.out.println("a等於b");

}else {

System.out.println("a不等於b");

}

}

code:

A:獲取兩個數據中較大的值

B:判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數

import java.util.Scanner;

class IfTest {

public static void main(String[] args) {

//創建鍵盤錄入對象

Scanner sc = new Scanner(System.in);

//獲取兩個數據中較大的值

System.out.println("請輸入第一個數據:");

int a = sc.nextInt();

System.out.println("請輸入第二個數據:");

int b = sc.nextInt();

//定義一個變量接收最大值

int max;

if(a > b) {

max = a;

}else {

max = b;

}

System.out.println("max:"+max);

System.out.println("----------------");

//判斷一個數據是奇數還是偶數

System.out.println("請輸入你要判斷的數據:");

int x = sc.nextInt();

if(x%2 == 0) {

System.out.println(x+"這個數據是偶數");

}else {

System.out.println(x+"這個數據是奇數");

}

}

}

code:

由於if語句的第二種格式剛才也完成了三元運算符可以完成的效果。

所以,我們就認為他們可以完成一樣的操作。

但是,他們就一點區別沒有嗎?肯定不是。

區別:

三元運算符實現的,都可以采用if語句實現。反之不成立。

什麽時候if語句實現不能用三元改進呢?

if語句控制的操作是一個輸出語句的時候就不能。

為什麽呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。

class IfDemo4 {

public static void main(String[] args) {

//獲取兩個數據的最大值

int a = 10;

int b = 20;

//if語句實現

int max1;

if(a > b) {

max1 = a;

}else {

max1 = b;

}

System.out.println("max1:"+max1);

//用三元改進

int max2 = (a > b)? a: b;

System.out.println("max2:"+max2);

System.out.println("----------");

//判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數

int x = 100;

if(x%2 == 0) {

System.out.println("100是一個偶數");

}else {

System.out.println("100是一個奇數");

}

//用三元改進

//這種改進是錯誤的。

//String s = (x%2 == 0)?System.out.println("100是一個偶數");:System.out.println("100是一個奇數");;

}

}

if語句第三種格式:

if(關系表達式1) {

語句體1;

}else if (關系表達式2) {

語句體2;

}

else {

語句體n+1;

}

執行流程

首先判斷關系表達式1看其結果是true還是false

如果是true就執行語句體1

如果是false就繼續判斷關系表達式2看其結果是true還是false

如果是true就執行語句體2

如果是false就繼續判斷關系表達式…看其結果是true還是false

如果沒有任何關系表達式為true,就執行語句體n+1

技術分享

Demo:

import java.util.Scanner;

class IfDemo5 {

public static void main(String[] args) {

//需求:鍵盤錄入一個成績,判斷並輸出成績的等級。

/*

90-100 優秀

80-90

70-80

60-70 及格

0-60 不及格

*/

//創建鍵盤錄入對象

Scanner sc = new Scanner(System.in);

//錄入數據

System.out.println("請輸入你的考試成績:");

int score = sc.nextInt();

/*

if(score>=90 && score<=100) {

System.out.println("優秀");

}else if(score>=80 && score<90) {

System.out.println("");

}else if(score>=70 && score<80) {

System.out.println("");

}else if(score>=60 && score<70) {

System.out.println("及格");

}else {

System.out.println("不及格");

}

*/

//這樣寫已經滿足我的基本要求,但是可能別人在使用的時候,不會按照你要求的數據給出了。

//在做一個程序的基本測試的時候,一定要考慮這樣的幾個問題:

//正確數據,錯誤數據,邊界數據。

//而我們剛才寫的程序並沒有處理錯誤數據,所以這個程序不是很好,要改進

/*

if(score>=90 && score<=100) {

System.out.println("優秀");

}else if(score>=80 && score<90) {

System.out.println("");

}else if(score>=70 && score<80) {

System.out.println("");

}else if(score>=60 && score<70) {

System.out.println("及格");

}else if(score>=0 && score<60){

System.out.println("不及格");

}else {

System.out.println("你輸入的成績有誤");

}

*/

//另一種判斷改進

if(score<0 || score>100) {

System.out.println("你輸入的成績有誤");

}else if(score>=90 && score<=100) {

System.out.println("優秀");

}else if(score>=80 && score<90) {

System.out.println("");

}else if(score>=70 && score<80) {

System.out.println("");

}else if(score>=60 && score<70) {

System.out.println("及格");

}else {

System.out.println("不及格");

}

}

}

Code:

需求:

鍵盤錄入x的值,計算出y的並輸出。

x>=3 y = 2x + 1;

-1<=x<3 y = 2x;

x<=-1 y = 2x – 1;

分析:

A:由於數據要鍵盤錄入,所以必須使用Scanner

B:由於是三種判斷,所以我們選擇if語句格式3

import java.util.Scanner;

class IfTest2 {

public static void main(String[] args) {

//創建鍵盤錄入對象

Scanner sc = new Scanner(System.in);

System.out.println("請輸入x的值:");

int x = sc.nextInt();

//定義一個y

int y;

//if語句格式3進行判斷

if(x >= 3) {

y = 2*x + 1;

}else if(x>=-1 && x<3) {

y = 2*x;

}else {

y = 2*x - 1;

}

System.out.println("y:"+y);

}

}

Code:

鍵盤錄入月份的值,輸出對應的季節。

3,4,5

6,7,8

9,10,11

12,1,2

分析:

A:鍵盤錄入月份的值,所以我們要使用Scanner

B:我們應該判斷這個月份在那個季節,而這個判斷情況較多,所以,用if語句格式3

if語句的使用場景:

A:針對表達式是一個boolean類型的判斷

B:針對一個範圍的判斷

import java.util.Scanner;

class IfTest3 {

public static void main(String[] args) {

//創建鍵盤錄入對象

Scanner sc = new Scanner(System.in);

//錄入數據

System.out.println("請你輸入一個月份:");

int month = sc.nextInt();

//第三種格式實現即可

if(month<1 || month>12) {

System.out.println("你輸入的月份有誤");

}else if(month == 1) {

System.out.println("冬季");

}else if(month == 2) {

System.out.println("冬季");

}else if(month == 3) {

System.out.println("春季");

}else if(month == 4) {

System.out.println("春季");

}else if(month == 5) {

System.out.println("春季");

}else if(month == 6) {

System.out.println("夏季");

}else if(month == 7) {

System.out.println("夏季");

}else if(month == 8) {

System.out.println("夏季");

}else if(month == 9) {

System.out.println("秋季");

}else if(month == 10) {

System.out.println("秋季");

}else if(month == 11) {

System.out.println("秋季");

}else {

System.out.println("冬季");

}

System.out.println("--------------");

//這個程序確實是符合了我們的需求,但是就是看起來比較麻煩

//那麽,我們能不能改進一下呢?

//month == 3

//month == 4

//month == 5

//我們發現,上面三個都是春季。

//而他們本身每一個都是一個boolean表達式

//所以,我們就可以考慮使用邏輯運算符給他們連接起來改進

if(month<1 || month>12) {

System.out.println("你輸入的月份有誤");

}else if(month==3 || month==4 || month==5) {

System.out.println("春季");

}else if(month==6 || month==7 || month==8) {

System.out.println("夏季");

}else if(month==9 || month==10 || month==11) {

System.out.println("秋季");

}else {

System.out.println("冬季");

}

System.out.println("--------------");

//這個時候,程序代碼以及可以了。

//但是呢,假如我要求你輸入一個月份,判斷是上半年還是下半年。

//這個時候,我們的判斷條件連接就是6boolean表達式

//我們可能還有更多的連接

//這個時候,其實我們還有另外的一種改進方案:

//month == 3

//month == 4

//month == 5

//month>=3 && month<=5

//用範圍也是可以改進的。

if(month<1 || month>12) {

System.out.println("你輸入的月份有誤");

}else if(month>=3 && month<=5) {

System.out.println("春季");

}else if(month>=6 && month<=8) {

System.out.println("夏季");

}else if(month>=9 && month<=11) {

System.out.println("秋季");

}else {

System.out.println("冬季");

}

System.out.println("--------------");

}

}

Code:

獲取三個數據中的最大值

由此案例主要是為了講解if語句是可以嵌套使用的。而且是可以任意的嵌套。

class IfTest4 {

public static void main(String[] args) {

int a = 10;

int b = 30;

int c = 20;

//三元實現

//int temp = (a>b)? a: b;

//int max = (temp>c)? temp: c;

//System.out.println("max:"+max);

//System.out.println("--------");

//if語句實現

int max;

if(a > b) {

if(a > c) {

max = a;

}else {

max = c;

}

}else {

if(b > c) {

max = b;

}else {

max = c;

}

}

System.out.println("max:"+max);

}

}

(3)循環結構 做一些重復的代碼

java基礎:流程控制語句(選擇結構if語句)