目錄
一,區塊作用域
二,順序結構
三,分支結構
switch語句問題(重點)
四,循環
4.1,易錯點
4.2,break語句
4.3,continue语句
五,输入输出
5.1,输出到控制台
5.2,从键盘输入
5.3,循环输入
六,猜数字游戏
首頁 Java java教程 Java邏輯控制怎麼使用

Java邏輯控制怎麼使用

Apr 28, 2023 pm 03:28 PM
java

    一,區塊作用域

    首先在深入學習控制結構之前,需要先了解區塊(block)的概念。

    區塊:即複合語句,是指由一對大括號括起來的若干條簡單的 Java 語句。塊確定了變數的作用域。一個區塊可以嵌套在另一個區塊中。

    public class TestDemo220425 {
        public static void main(String[] args) {
            int n = 10;
            {
                int k = 20;
                int n = 20;
            }
        }
    }
    登入後複製

    在這段程式碼中,我們主函數裡面的括號括起來的部分就是區塊。一個區塊可以嵌套在另一個區塊裡面,但是注意,在Java裡面,不能在嵌套的區塊裡面聲明同名的變量,例如上面程式碼的內部區塊裡面 int n = 20的做法就是錯誤的。這裡要區分C/C 裡面有全域變數遇到同名局部變數的時候會優先使用局部變量,屏蔽全域變量,這在Java裡面是不允許這樣做的(Java無全域變數的概念,這裡只是類比)。

    二,順序結構

    順序結構比較簡單,依照程式碼書寫的順序一行一行執行。

    圖示:

    Java邏輯控制怎麼使用

    三,分支結構

    圖示:

    Java邏輯控制怎麼使用

    注意:if /else if 之間是一個並列的關係,不像是if else是一個非此即彼的關係,這種叫做多分支的結構。

    有關分支結構的幾個注意點:

    1,if括號裡面的表達式只能是布林表達式,沒有什麼非0為真,0表示假。

    2,Java裡面的程式碼風格我們推薦行尾風格。

    3,懸空else問題,也就是說if/else語句最好一定要把括號加上,這樣程式碼可讀性更好,如果不加,當有多個if/else語句時, else一定是與最近的else進行匹配

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int x = 10;
            int y = 10;
            if (x == 10)
                if (y == 10)
                    System.out.println("aaa");
            else //这个else其实匹配的是if(y == 10)
                System.out.println("bbb");
        }
    }
    登入後複製

    switch語句問題(重點)

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int a = 3;
            switch(a){
                default:
                    System.out.println("输入错误!");
                    break;
                case 1:
                    System.out.println(1);
                    break;
                case 2:
                    System.out.println(2);
                    break;
            }
        }
    }
    登入後複製

    注意:

    1,無論default的位置在哪裡,只要沒有匹配到任何一個case,就會直接走default。

    2,每一個case語句以及default語句後面的break語句都不能省略,不然就會穿透執行,除非是在特定的情況下,不然break都不能掉。

    3,switch結構裡面的關鍵字只有case,break,continue是用在迴圈裡面的,這裡是分支結構,不要混淆。

    4,switch括號裡面的資料的類型只能是byte, short, int, char,String, enum類型,然後case後面的常數與switch匹配就行。 (注意不能是long,因為整形都會往int轉,但是long轉int會有精度損失)。

    5,case後面的常數值不能夠重複,每一個case就代表一種不同的情況。

    6,switch的括號裡面可以放表達式,但不能像if語句一樣,可以放一些較為複雜的表達式。

    7,switch語句可以嵌套,但不好看。

    四,循環

    三大循環:while循環,for循環,do while循環(循環具體的基本定義就不做介紹了,這裡只是點一些要注意的點)

    4.1,易錯點

    1,循環的幾個部分,循環變數的定義,條件判斷,循環體,循環變數的迭代。一定要注意循環變數的迭代,如果說一個循環變數沒有迭代直至向著跳出循環的方向進行的話,那麼就可能造成死循環了。

    2,不要在循環內部對循環變量做手腳,即使你需要使用你的循環變量,用一個臨時的變量來接收它的值,然後再去使用。

    3,輕易不要將浮點數當作循環變數。

    public class TestDemo220425 {
        public static void main(String[] args) {
            for(double x = 0;x != 10;x += 0.1){
                System.out.println("haha");
            }
        }
    }
    登入後複製

    不出意外的,這段程式碼死循環了,也就是我說的將浮點數當作循環變數。因為0.1在儲存的時候,小數部分是無法用二進制準確表示的,所以我們每次加的都是一個近似值,那麼這裡可能剛好加了之後可能剛好跳過了10,所以循環就一直進行了下去。

    4.2,break語句

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int i = 1;
            while(i <= 10){
                if(i == 2){
                    break;
                }
                System.out.println("hehe");
                i++;
            }
        }
    }
    登入後複製

    程式運行截圖:

    Java邏輯控制怎麼使用

    break語句的作用是跳出它所在的循環,例如上面當i == 2的時候,就會跳出while循環,所以只會輸出一個hehe。

    break的擴展用法:

    在Java中,是沒有goto語句的,但是因為設計者認為goto語句思想還是沒有問題的在某些特定的條件下,確實可以起到很好的跳出循環的效果,所以在Java裡面就發明了**帶標籤的break語句,作用是可以達到break到標籤所指定的循​​環的外部。 (標籤只要是合法的識別碼即可)**

    範例:

    public class TestDemo220425 {
        public static void main(String[] args) {
            label1:
            while(true){
                for(int i = 0;i < 10;i++){
                    if(i == 3){
                        break label1;
                    }
                    System.out.println(i);
                }
            }
            System.out.println("已跳出循环!");
        }
    }
    登入後複製

    程式運行截圖:

    Java邏輯控制怎麼使用

    可以看到,到我们利用标签后,可以指定跳出到哪里。如果这里只是用break,不用标签的话,那么break就只会跳出里层的for循环,外面的while还是一个死循环,用了标签之后,当i== 3,就可以直接跳出到while循环的外部。

    4.3,continue语句

    public class TeseDemo220424 {
        public static void main(String[] args) {
            int i = 1;
            while(i <= 10){
                if(i == 2){
                    continue;
                }
                System.out.println("hehe");
                i++;
            }
        }
    }
    登入後複製

    程序运行截图:

    Java邏輯控制怎麼使用

    continue语句的作用是结束本轮循环而开始下一次的循环,如上题,当i == 2,所以就会直接跳过后面的语句,也就是i++不会执行了,导致i一直等于2,所以陷入了死循环。当然如果你这里用for循环就不会这样了,因为i++的执行顺序在前面,continue影响不到

    continue扩展用法:

    同样的,在continue里面,也是可以使用标签的,可以指定跳到与标签匹配的循环的首部。

    示例:

    public class TestDemo220425 {
        public static void main(String[] args) {
            label1:
            for(int i = 0;i < 10;i++){
                if(i == 3){
                    continue label1;
                }
                System.out.println(i);
            }
    }
    登入後複製

    程序运行截图:

    Java邏輯控制怎麼使用

    五,输入输出

    5.1,输出到控制台

    Java邏輯控制怎麼使用

    利用%结合上面的转换符就可以进行格式化的输出,当然在进行格式化输出的时候,也可以运用一些标志,比如输出的时候带前缀,带正负号等等…

    Java邏輯控制怎麼使用

    5.2,从键盘输入

    public class TeseDemo220424 {
        public static void main(String[] args) {
            Scanner myscanner = new Scanner(System.in);
            System.out.println("请输入年龄");
            int num = myscanner.nextInt();
            System.out.println(num);
            System.out.println("请输入名字");
            String str = myscanner.nextLine();//读入一行
            System.out.println(str);
            System.out.println("请输入专业");
            String str1 = myscanner.next();
            System.out.println(str1);//读入一个字符串,遇到空格停止
        }
    }
    登入後複製

    这里就是要注意你的输入与你接收的方法要对应,另外就是当你用了nextLine()来接收一行的时候,要注意它前面有不有用输入的方法,因为你的换行会被当成一行读入到nextLine()里面,这里就类似于C语言里面吃掉缓冲区里面的回车是一个道理。

    程序运行截图:

    Java邏輯控制怎麼使用

    扩展,在用键盘进行输入的时候,我们是能够看到我们自己的输入的,但是在某些情况下,比如输入密码,我们一般是不想让人看到的,所以这里可以运用到Console类。(这里只做简要介绍)

    Console类:访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法,也即使从控制台接收输入的方法。

    使用示例:

    import java.io.Console;
    public class TestDemo220425 {
        public static void main(String[] args) {
            Console cons = System.console();
            String username = cons.readLine("User name: ");
            char[] passwd = cons.readPassword("Password:");
        }
    }
    登入後複製

    在IDEA下的运行截图:

    Java邏輯控制怎麼使用

    ❌???怎么直接报空指针异常了,寻思着这里也没用到指针吧,感到十分的不解…????????

    后来,度娘告诉我是这样的:在使用IDEA等集成开发环境中,使用Console将全为null,表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。以至于我们只能去控制台下或者linux环境下去运行程序,如下图在控制台下运行:

    Java邏輯控制怎麼使用

    可以看到在控制台下运行正常,并且我们输入的密码是看不到的(这里真的输入了的哦,只是看不到,中国人不骗中国人的!????)

    5.3,循环输入

    public class TeseDemo220424 {
        public static void main(String[] args) {
            Scanner myscanner1 = new Scanner(System.in);
            while(myscanner1.hasNextInt()){
                int age = myscanner1.nextInt();
            }
        }
    }
    登入後複製

    hasNextInt():如果此扫描器输入中的下一个标记可以使用nextInt()方法将其解释为默认基数中的int值,则返回true。也即是说只有你下一个输入的是int类型的值才能够进入循环。

    程序运行截图:

    Java邏輯控制怎麼使用

    循环输入的时候可以ctrl + D 进行正常退出

    六,猜数字游戏

    这里主要是介绍Java里面的生成随机数的方法

    所在包:Java.util.random

    import java.util.Random;
    public class TeseDemo220424 {
        public static void main(String[] args) {
    //        生成随机数
            Random random = new Random();
            int rannum = random.nextInt(100);//生成[0,100) 的随机数 其他范围可以通过在后面加上数来进行范围改变,默认左边都是从0开始
            
        }
    }
    登入後複製

    对于int rannum = random.nextInt();如果你后面nextInt()中不给值,那么它产生的就是所有有效的整数,包括正数,负数,0

    注意:Random random = new Random(2022); 这里在定义随机数对象的时候是可以传参的,因为生成随机数是以时间戳为参考的,所以当你传入一个数后,他就只会以这个数为标准进行时间戳的计算,进而产生的随机数每次都是一样的。

    其他方法:

    Java邏輯控制怎麼使用

    其他方法主要就是Math.random(),这个产生的是0~1之间的小数,左闭右开。当然这个是没有上面那种产生同一个随机数的用法的。

    以上是Java邏輯控制怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

    在本文中,我們保留了最常被問到的 Java Spring 面試問題及其詳細答案。這樣你就可以順利通過面試。

    突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

    Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

    Java 中的時間戳至今 Java 中的時間戳至今 Aug 30, 2024 pm 04:28 PM

    Java 中的時間戳記到日期指南。這裡我們也結合範例討論了介紹以及如何在java中將時間戳記轉換為日期。

    Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

    膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

    PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

    PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

    PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

    PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

    創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

    Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

    如何在Spring Tool Suite中運行第一個春季啟動應用程序? 如何在Spring Tool Suite中運行第一個春季啟動應用程序? Feb 07, 2025 pm 12:11 PM

    Spring Boot簡化了可靠,可擴展和生產就緒的Java應用的創建,從而徹底改變了Java開發。 它的“慣例慣例”方法(春季生態系統固有的慣例),最小化手動設置

    See all articles