Java 基礎(chǔ)語法中的邏輯控制
Java 基礎(chǔ)語法中的邏輯控制
一、邏輯控制語句
1. 順序結(jié)構(gòu)
像我們寫的代碼,執(zhí)行時會按照從上到下一行一行的執(zhí)行。這z就是順序結(jié)構(gòu),不同的順序,結(jié)果可能就不一樣。如
System.out.println(1) System.out.println(2) System.out.println(3)
該代碼結(jié)果為 1(換行)2(換行)3,但是如果把順序改變結(jié)果就變了
System.out.println(2) System.out.println(3) System.out.println(1)
該代碼結(jié)果就變?yōu)?2(換行)3(換行)1
2. 分支結(jié)構(gòu)
2.1 if 語句
和 C 語言一樣,在 Java 中 if 語句也有三種基本的形式
形式一
if(布爾表達(dá)式){ // 條件滿足時執(zhí)行的代碼 }形式二
if(布爾表達(dá)式){ // 條件滿足時執(zhí)行的代碼 }else{ // 條件不滿足時執(zhí)行的代碼 }形式三
if(布爾表達(dá)式1){ // 條件1滿足時執(zhí)行的代碼 }else if(布爾表達(dá)式2){ // 條件2滿足時執(zhí)行的代碼 }else{ // 條件都不滿足時執(zhí)行的代碼 }
但是從形式上我們就可以看出還是有一些不同的
- 條件表達(dá)式必須是布爾值,不能像 C 語言一樣直接使用一個數(shù)值,
如:
int a = 10; if(a){ System.out.println(a); }這種代碼就是錯的,條件必須是布爾值
int a = 10; if(a > 0){ System.out.println(a); }
這種代碼就是正確的
- 代碼風(fēng)格問題,比如我寫 C 語言時喜歡把一對大括號并列在行首。但是在 java 中更推薦上述三種形式那樣的風(fēng)格,將 { 放在 if 或 else 同一行
- 還要注意懸垂 else 問題,記住 else 是與 最接近的 if 匹配。
如:
int a = 2; if(a>0) if(a>10) System.out.println("a > 10"); else System.out.println("a > 0 && a <= 10");我們要知道,最下面的 else 是與與它最近的 if 匹配的
2.2 switch 語句
Java 中的 switch 語句和 C 語言中的幾乎一樣,大家如果不太熟悉 switch 以及該章所講解的一些邏輯結(jié)構(gòu)可以去看看我寫的 C語言三大語句注意事項(xiàng)
。但是既然不是完全一樣,那哪里有區(qū)別呢?
在 Java 中,switch(表達(dá)式) 中的表達(dá)式是有類型限制的。
它只能使用:整數(shù)(只包括 byte、short、int)、字符(char)、字符串(String)、枚舉類型
3. 循環(huán)結(jié)構(gòu)
3.1 while 循環(huán)
舒服,Java 的 while 循環(huán)和 C 語言也是極其類似,只有一個小的差異
while (表達(dá)式) 中的表達(dá)式必須是布爾值
3.2 break
break 的功能是:讓最靠近包裹它的整個循環(huán)提前結(jié)束。這也是和 C 語言是一樣的
3.3 continue
continue 的功能是:跳過本次循環(huán),立即進(jìn)入下次循環(huán)。這也是和 C 語言是一樣的
3.4 for 循環(huán)
Java 中的 for 循環(huán)和 C 語言中的也很類似,只有一個差異
for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 中的表達(dá)式2是循環(huán)的判斷條件,要使用布爾值
3.5 do while 循環(huán)
Java 中的 do while 循環(huán)也是和 C 語言很類似,只有一個差異
while 中的循環(huán)條件只能是布爾值
但是一般不推薦使用,因?yàn)樗辽贂?zhí)行一次循環(huán),不注意可能會犯錯
二、輸入輸出方式
1. 輸出到控制臺
基本語法:
System.out.println(msg); // 輸出一個字符串,自帶換行 System.out.print(msg); // 輸出一個字符串,不帶換行 System.out.printf(format,msg); // 格式化輸出,括號內(nèi)內(nèi)容類似于 C 語言的 printf
代碼示例
int a = 10; System.out.println(a); // 輸出 a,自帶換行 System.out.print(a); // 輸出 a,不帶換行 System.out.printf("%d\n",a); // 格式化輸出,括號內(nèi)內(nèi)容類似于 C 語言的 printf
格式化輸出表(隨用隨查)
2. 從鍵盤輸入
讀入一個字符(不推薦使用)
直接使用
System.in.read()
可以讀入一個字符,但是需要搭配異常處理。如果不搭配異常,如下面代碼就會編譯出錯public static void main(String[] args) { System.out.print("Enter a char:"); char i = (char)System.in.read(); System.out.println("The char is :" + i); }我們需要將鼠標(biāo)放到 read 上面,再按住
Alt + Enter
鍵就會出現(xiàn)
再點(diǎn)擊第一個或者第二個就不會報(bào)錯了。這里其實(shí)是處理了異常,但是一個簡單的讀入字符就要這么復(fù)雜所以不推薦使用。
使用 Scanner 讀取字符/字符串/整數(shù)/浮點(diǎn)數(shù)/布爾值
- 首先需要導(dǎo)入 util 包
import java.util.Scanner
; ,在 IDEA 中,其可以通過輸入 Scanner 后直接回車快速導(dǎo)入- 然后再構(gòu)造一個 Scanner 對象并與”標(biāo)準(zhǔn)輸入流“ System.in 關(guān)聯(lián):
Scanner 對象名 = new Scanner(System.in);
- 再就可以通過 Scanner 類的各種方法實(shí)現(xiàn)輸入操作了
import java.util.Scanner; public class TestDemo { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); //讀入一個整數(shù) double b = in.nextDouble(); //讀入一個浮點(diǎn)數(shù) boolean c = in.nextBoolean(); //讀入一個布爾值 String s = in.next(); //讀入一個字符串 } }但是要注意,上述讀入字符串是按空白符當(dāng)作分隔符的,故只能讀入第一個空格之前的字符。如果想要讀取該行的所有字符(包含空格),應(yīng)該使用
String s = in.nextLine();但是使用這個方法還是有很大的缺陷,如果這行代碼上面還有其他讀入的語句,可能這行代碼就不會實(shí)行。因?yàn)樯弦恍械幕剀嚳赡鼙凰x入,直接這行結(jié)束。因此,只能將其放在讀入代碼的第一個或者在它前面加一個
in.nextLine();來讀取掉之前的回車。
我們知道在 C 語言中可以寫類似于這樣的代碼輸入多組數(shù)據(jù)
int a; while(scanf("%d",&a) != EOF) { // 內(nèi)容 }
在 C++ 中我們也可以寫類似于這樣的代碼輸入多組數(shù)據(jù)
int a; while(cin>>a) { // 內(nèi)容 }
那么在 Java 中怎么做呢?代碼如下
Scanner in = new Scanner(System.in); while(in.hasNextInt()){ int a = in.nextInt(); // 內(nèi)容 }
并且在 IDEA 上我們可以手動輸入 Ctrl + D
結(jié)束,在 Windows 的 cmd 上 我們手動輸入 Ctrl + Z
結(jié)束,在 Linux 或 Mac 上,輸入 Ctrl + D
結(jié)束
三、猜數(shù)字游戲
學(xué) C 語言的時候我們可能都接觸過隨機(jī)數(shù)的生成,或者直接寫一個猜隨機(jī)數(shù)的游戲。那么使用 Java 該怎么寫呢?
首先我們要知道在 Java 中隨機(jī)數(shù)是怎么生成的。
- 首先需要導(dǎo)入 util 包
import java.util.Random;
,在 IDEA 中,其可以通過輸入 Random 后直接回車快速導(dǎo)入- 然后通過 Random 類中的方法生成我們想要的,
如:
import java.util.Random; public class TestDemo { public static void main(String[] args) { Random random = new random(); // 默認(rèn)隨機(jī)種子是系統(tǒng)時間 int rand = random.nextInt(bound:100) + 1; // random.nextInt(bound:100) 是生成[0,100)間的隨機(jī)整數(shù) } }
接下來就是很簡單了,只要我們輸入的數(shù)字與隨機(jī)數(shù)字進(jìn)行一下比較。直到判斷正確再退出就可。
故最終的代碼是
public class TestDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); int rand = random.nextInt(100) + 1; while (true){ System.out.print("請輸入你所猜測的數(shù)字:"); int num = scanner.nextInt(); if(num == rand){ System.out.println("恭喜你,猜對了!"); break; }else if(num < rand){ System.out.println("很遺憾,你猜的數(shù)字小了!"); }else{ System.out.println("很遺憾,你猜的數(shù)字大了!"); } } } }
四、總結(jié)
這章講了 Java 的邏輯控制結(jié)構(gòu),包含了順序結(jié)構(gòu)、順序結(jié)構(gòu)和分支結(jié)構(gòu)。還講了 Java 的輸入輸出方式。并在最后用 Java 程序?qū)懥艘粋€簡單的猜數(shù)字游戲。我們可以發(fā)現(xiàn),很多都是和 C 語言類似的,這也降低了我們學(xué)習(xí)的難度。
到此這篇關(guān)于Java 基礎(chǔ)語法中的邏輯控制的文章就介紹到這了,更多相關(guān)Java 邏輯控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于mybatis?plus實(shí)現(xiàn)數(shù)據(jù)源動態(tài)添加、刪除、切換,自定義數(shù)據(jù)源的示例代碼
這篇文章主要介紹了基于mybatis?plus實(shí)現(xiàn)數(shù)據(jù)源動態(tài)添加、刪除、切換,自定義數(shù)據(jù)源,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03利用Java如何獲取Mybatis動態(tài)生成的sql接口實(shí)現(xiàn)
MyBatis 的強(qiáng)大特性之一便是它的動態(tài)SQL,下面這篇文章主要給大家介紹了關(guān)于利用Java如何獲取Mybatis動態(tài)生成的sql接口實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01java一個接口多個實(shí)現(xiàn)類的調(diào)用方式
這篇文章主要給大家介紹了關(guān)于java一個接口多個實(shí)現(xiàn)類的調(diào)用方式的相關(guān)資料,經(jīng)測試確認(rèn),當(dāng)一個接口有多個實(shí)現(xiàn)時,調(diào)用時只會執(zhí)行一個,有時候需要多個實(shí)現(xiàn)調(diào)用,需要的朋友可以參考下2023-09-09