Java-03迴圈語句

来源:https://www.cnblogs.com/han-fei/archive/2023/12/12/17896642.html
-Advertisement-
Play Games

tip:[start]學習編程語言語法是次要的,思維是主要的。如何把頭腦中的想法變成簡潔的代碼,至關重要。——閆學燦tip:[end] 學習迴圈語句只需要抓住一點:代碼執行順序! while迴圈 可以簡單理解為迴圈版的if語句。if語句是判斷一次,如果條件成立,則執行後面的語句;while是每次判斷 ...


tip:[start]學習編程語言語法是次要的,思維是主要的。如何把頭腦中的想法變成簡潔的代碼,至關重要。——閆學燦tip:[end]

  • 學習迴圈語句只需要抓住一點:代碼執行順序!

while迴圈

  • 可以簡單理解為迴圈版的if語句。if語句是判斷一次,如果條件成立,則執行後面的語句;while是每次判斷,如果成立,則執行迴圈體中的語句,否則停止。
public class Main {
    public static void main(String[] args) {
        int i = 0;
        while (i < 10) {
            System.out.println(i);
            i ++ ;
        }
    }
}
  • 練習:求1~100中所有數的立方和。
public class Main {
    public static void main(String[] args) {
        int i = 1, sum = 0;
        while (i <= 100) {
            sum += i * i * i;
            i ++ ;
        }
        System.out.println(sum);
    }
}
  • 練習:求斐波那契數列的第n項。
    • f(1) = 1
    • f(2) = 1
    • f(3) = 2
    • ...
    • f(n) = f(n-1) + f(n-2)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int a = 1, b = 1, i = 1; // f(1), f(2)
        while (i < n) { // 會存儲f(n), f(n+1)
            int c = a + b; //f(3)
            a = b; // f(2)
            b = c; // f(3)
            i ++ ; // 準備計算f(4)
        }

        System.out.println(a);
    }
}
  • 死迴圈:迴圈永久執行,無法結束。我們要避免寫出死迴圈。
public class Main {
    public static void main(String[] args) {
        int x = 1;
        while (x == 1)
            System.out.println("!");
    }
}

do while迴圈

  • do while迴圈不常用。

  • do while語句與while語句非常相似。唯一的區別是,do while語句限制迴圈體後檢查條件。不管條件的值如何,我們都要至少執行一次迴圈

public class Main {
    public static void main(String[] args) {
        int x = 1;
        while (x < 1) {
            System.out.println("x!");
        }

        int y = 1;
        do {
            System.out.println("y!");
        } while (y < 1);
    }
}

for迴圈

  • 基本思想:把控制迴圈次數的變數從迴圈體中剝離。

  • init-statement可以是聲明語句、表達式、空語句,一般用來初始化迴圈變數;

  • condition是條件表達式,和while中的條件表達式作用一樣;可以為空,空語句表示true;

  • expression一般負責修改迴圈變數,可以為空。

for (init-statement; condition; expression) {
    statement
}
public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i ++ ) {  // 迴圈體中只有一條語句時,可以不加大括弧
            System.out.println(i);
        }
    }
}
  • 練習:求1~100中所有數的立方和。
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i ++ )
            sum += i * i * i;
        System.out.println(sum);
    }
}
  • 練習:求斐波那契數列的第n項。
    • f(1) = 1
    • f(2) = 1
    • f(3) = 2
    • ...
    • f(n) = f(n-1) + f(n-2)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int a = 1, b = 1;
        for (int i = 1; i < n; i ++ ) {
            int c = a + b;
            a = b;
            b = c;
        }

        System.out.println(a);
    }
}
  • init-statement可以定義多個變數,expression也可以修改多個變數。
  • 例如求 1 * 10 + 2 * 9 + 3 * 8 + 4 * 7 + 5 * 6:
public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1, j = 10; i < j; i ++, j -- ) {
            sum += i * j;
        }

        System.out.println(sum);
    }
}

跳轉語句

break

  • 可以提前從迴圈中退出,一般與if語句搭配。

  • 例題:判斷一個大於1的數是否是質數:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        boolean isPrime = true;
        for (int i = 2; i < n; i ++ )
            if (n % i == 0) {
                isPrime = false;
                break;
            }

        if (isPrime)
            System.out.println("yes");
        else
            System.out.println("no");
    }
}

continue

  • 可以直接跳到當前迴圈體的結尾。作用與if語句類似。

  • 例題:求1~100中所有偶數的和。

public class Main {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 100; i ++ ) {
            if (i % 2 == 1) continue;
            sum += i;
        }

        System.out.println(sum);
    }
}

多層迴圈

  • 將1~100列印到一個10 * 10的矩陣中:
public class Main {
    public static void main(String[] args) {
        for (int i = 0, k = 1; i < 10; i ++ ) {
            for (int j = 0; j < 10; j ++, k ++ ) {
                System.out.printf("%d ", k);
            }
            System.out.println();
        }
    }
}
  • 練習:列印1~100中的所有質數
public class Main {
    public static void main(String[] args) {
        for (int i = 2; i <= 100; i ++ ) {
            boolean isPrime = true;
            for (int j = 2; j < i; j ++ ) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
                System.out.println(i);
        }
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從0到1,手把手帶你使用QT的qInstallMessageHandler函數結合qDebug,qInfo實現自定義的日誌系統,支持輸出日誌到文件和控制台,支持自動檢測日誌文件大小,支持自動更新日誌文件修改日期,自動備份,自動刪除一個月前的日誌文件,支持多線程程式, 支持擴展,可輸出日誌到資料庫,網... ...
  • 背景 公司的海外業務需要將雲上的操作讀取到內部的日誌文件中,永久保存,供內部審計使用。 由於之前沒有用過AWS相關的SDK,在使用過程中也遇到一些困難,這裡記錄一下,並且總結一下過程。 代碼 快速開始 代碼參考地址:https://github.com/awsdocs/aws-doc-sdk-exa ...
  • Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹`QSpinBox`精度數值組件的常用方法及靈活運用。`QSpinBox`是Qt框架中的一個部件(Widget),... ...
  • 在Maven項目中,90%以上的jar包是通過pom文件直接從開源倉庫中獲取依賴jar包文件,然後在項目中進行集成使用。 此時如果你有一個開源項目,那麼如何將該開源項目發佈到Maven中央倉庫,讓其他人可以方便的使用,而不是先下載jar,然後install的本地? 本文將通過一步步的操作帶領大家講自 ...
  • isdigit 字元串的isdigit方法用於判斷字元串是否只包含數字,即0-9的字元 print('1233'.isdigit()) # True print('12.33'.isdigit()) # False isnumeric 字元串的isnumeric方法可用於判斷字元串是否是數字,數字包 ...
  • 前言 之前py打包的exe一直是不涉及圖片等資源的,直到我引入圖片後打包,再雙擊exe發現直接提示未找到資源。 分析 我py代碼中的圖片引入使用的是項目相對路徑,打包時pyinstaller只會引入py模塊,這種路徑引入的資源其實是不會打包進exe的。有人想的是可以直接將資源放到exe旁邊,但這不是 ...
  • 來源:https://www.jetbrains.com/zh-cn/idea/whatsnew/ 大家好,我是棧長。 IDEA 2023.3 正式發佈啦,有不少實用的新特性,一起來看看! 推薦一個開源免費的 Spring Boot 實戰項目: https://github.com/javastac ...
  • 1. 環境 在網上找的很多文章中寫得都有很多問題,這裡記錄一下最近一次成功地發佈jar包到maven中央倉庫的過程。並附帶上每一個步驟官方的指導鏈接。 系統:mac(windows系統在下載輔助工具時不太一樣,在配置上和mac系統沒有區別) IDE:IntelliJ IDEA JDK:1.8 mav ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...