Java流程式控制制

来源:https://www.cnblogs.com/ygstudy/archive/2023/01/04/17023824.html
-Advertisement-
Play Games

流程式控制制 用戶交互Scanner Scanner類可以實現電腦與人的交互。java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。 Scanner 類的 next() 與 nextLine() 方法獲取輸入的字元串,在讀取前我們一般需要 使用 ...


流程式控制制

用戶交互Scanner

Scanner類可以實現電腦與人的交互。java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。

Scanner 類的 next() 與 nextLine() 方法獲取輸入的字元串,在讀取前我們一般需要 使用 hasNext() 與 hasNextLine() 判斷是否還有輸入的數據。

next & nextLine

使用next方式接收一下輸入的數據:

public static void main(String[] args) { 
	//創建一個掃描器對象,用於接收鍵盤數據 
	Scanner scanner = new Scanner(System.in); 
	//next方式接收字元串 
	System.out.println("Next方式接收:");
    //判斷用戶還有沒有輸入字元 
    if (scanner.hasNext()){ 
    	String str = scanner.next(); 
    	System.out.println("輸入內容:"+str); 
    }//凡是屬於IO流的類如果不關閉會一直占用資源,所以我們要對資源進行關閉 
    scanner.close(); 
}

測試數據:Hello World!

結果:只輸出了Hello。

使用另一個方法來接收數據:nextLine():

public static void main(String[] args) { 
	Scanner scan = new Scanner(System.in); // 從鍵盤接收數據 
	// nextLine方式接收字元串 
	System.out.println("nextLine方式接收:"); 
	// 判斷是否還有輸入 
	if (scan.hasNextLine()) { 
		String str2 = scan.nextLine(); 
		System.out.println("輸入內容:" + str2); 
		}
	scan.close(); 
}

測試數據:Hello World!

結果:輸出了Hello World!

重點是兩者的區別:

next():

  • 一定要讀取到有效字元後才可以結束輸入。

  • 對輸入有效字元之前遇到的空白,next() 方法會自動將其去掉。

  • 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。

  • next() 不能得到帶有空格的字元串。

nextLine():

  • 以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字元。

  • 可以獲得空白。

順序結構

JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若幹個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。

選擇結構

1.if單選擇結構:

我們需要判斷一個東西是否可行我們才向下去執行。

if(布爾表達式){ 
	//如果布爾表達式為true將執行的語句 
	}

意義:if語句對條件表達式進行一次測試,若測試為真,則執行下麵的語句,否則跳過該語句。

2.if雙選擇結構:

說得明白一點就是“成功了怎麼樣否則怎麼樣”。

if(布爾表達式){ 
	//如果布爾表達式的值為true 
    語句塊1
	}else{ 
	//如果布爾表達式的值為false 
    語句塊2
		}

意義:當條件表達式為真時,執行語句塊1,否則,執行語句塊2。也就是else部分。

3.if多選擇結構:

在實際生活中我們可能面臨著有多個條件滿足一個人條件就做對應的事,那麼此時我們就需要多選擇結構。

if(布爾表達式 1){ 
	//如果布爾表達式 1的值為true執行代碼 
	}else if(布爾表達式 2){ 
		//如果布爾表達式 2的值為true執行代碼 
		}else if(布爾表達式 3){ 
			//如果布爾表達式 3的值為true執行代碼 
			}else { 
				//如果以上布爾表達式都不為true執行代碼 
				}

if 語句後面可以跟 else if…else 語句,這種語句可以檢測到多種可能的情況。

if多選擇結構使用的註意點:

  • if 語句至多有 1 個 else 語句,else 語句在所有的 else if 語句之後。
  • if 語句可以有若幹個 else if 語句,它們必須在 else 語句之前。
  • 一旦其中一個 else if 語句檢測為 true,其他的 else if 以及 else 語句都將跳過執行。

4.嵌套的if結構:

使用嵌套的 if…else 語句是合法的。也就是說你可以在另一個 if 或者 else if 語句中使用 if 或者 else if 語句。你可以像 if 語句一樣嵌套 else if...else。

例如:

if(布爾表達式 1){ 
	//如果布爾表達式 1的值為true執行代碼 
		if(布爾表達式 2){ 
			//如果布爾表達式 2的值為true執行代碼 
		} 
	}

5.switch多選擇結構:

switch case 語句判斷一個變數與一系列值中某個值是否相等若相等就執行對應語句塊中的代碼,每個值稱為一個分支。

例如:

switch(expression){ 
	case value : 
		//語句 break; //可選 
	case value : 
		//語句 break; //可選 //你可以有任意數量的case語句 
	default : //可選 
		//語句 
	}

使用switch case語句需要註意以下使用規則:

  • switch 語句中的變數類型可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支持字元串 String 類型了,同時 case 標簽必須為字元串常量或字面量。

  • switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。

  • case 語句中的值的數據類型必須與變數的數據類型相同,而且只能是常量或者字面常量。

  • 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。

  • 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現break 語句。

  • switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)default 在沒有 case 語句的值和變數值相等的時候執行。default 分支不需要 break 語句。

switch case 執行時,一定會先進行匹配,匹配成功返回當前 case 的值,再根據是否有 break,判斷是否繼續輸出,或是跳出判斷。

如果 case 語句塊中沒有 break 語句時,匹配成功後,從當前 case 開始,後續所有 case 的值都會輸出。如果後續的 case 語句塊有 break 語句則會跳出判斷。

迴圈結構

順序結構的程式語句只能被執行一次。如果您想要同樣的操作執行多次,,就需要使用迴圈結構。

Java中有三種主要的迴圈結構:

  • while 迴圈

  • do…while 迴圈

  • for 迴圈

1.while迴圈:

while是最基本的迴圈,它的結構為:

while( 布爾表達式 ) { 
	//迴圈內容 
}

例如:

public static void main(String[] args) { 
	int i = 0; 
	//i小於100就會一直迴圈 
	while (i<100){ 
		i++; System.out.println(i); 
		} 
}

只要布爾表達式的值為true那麼就會一直迴圈下去。

在迴圈剛開始時,會計算一次“布爾表達式”的值,若條件為真,執行迴圈體。而對於後來每一次額外的迴圈,都會在開始前重新計算一次判斷是否為真。直到條件不成立,則迴圈結束。

2.do...while迴圈:

對於上面while迴圈在每次迴圈之前我們都要判斷布爾表達式的值是否為true,當為true的時候我們才會進行迴圈否則我們就會終止迴圈。有時候我們需要即使不滿足條件我們也需要進行一次迴圈這時候我們就需要使用到do...while迴圈結構。

do…while 迴圈和 while 迴圈相似,不同的是,do…while 迴圈至少會執行一次

do { 
	//代碼語句 
	}while(布爾表達式);

註意:布爾表達式在迴圈體的後面,所以語句塊在檢測布爾表達式之前已經執行了。 如果布爾表達式的值為 true,則語句塊一直執行,直到布爾表達式的值為 false。

例如:

public static void main(String[] args) { 
	int i = 0; int sum = 0; 
	do {
		sum = sum+i; i++; 
		}while (i <= 100); 
		System.out.println("Sum= " + sum); 
	}

3.for迴圈:

語法格式如下:

for(初始化; 布爾表達式; 更新) { 
	//代碼語句 
}

for迴圈說明如下:

  • 最先執行初始化步驟。可以聲明一種類型,但可初始化一個或多個迴圈控制變數,也可以是空語句。
  • 然後,檢測布爾表達式的值。如果為 true,迴圈體被執行。如果為false,迴圈終止,開始執行迴圈體後面的語句。
  • 執行一次迴圈後,更新迴圈控制變數(迭代因數控制迴圈變數的增減)。
  • 再次檢測布爾表達式。迴圈執行上面的過程。

例如:

public static void main(String[] args) { 
	int a = 1; //初始化 
	while(a<=100){ //條件判斷 
		System.out.println(a); //迴圈體 
		a+=2; //迭代 
			}
		System.out.println("while迴圈結束!"); 
		for(int i = 1;i<=100;i++){ //初始化//條件判斷 //迭代 
			System.out.println(i); //迴圈體 
			}
		System.out.println("while迴圈結束!"); 
	}

breake&continue

breake關鍵字:

break 主要用在迴圈語句或者 switch 語句中,用來跳出整個語句塊。break 跳出最裡層的迴圈,並且繼續執行該迴圈下麵的語句。

例如:

public static void main(String[] args) { 
	int i=0; 
	while (i<100){ 
		i++; 
		System.out.println(i); 
		if (i==30){ 
			break; 
			} 
		} 
	}

continue關鍵字:

continue 適用於任何迴圈控制結構中。作用是讓程式立刻跳轉到下一次迴圈的迭代。在 for 迴圈中,continue 語句使程式立即跳轉到更新語句。

例如:

public static void main(String[] args) { 
	int i=0; 
	while (i<100){ 
		i++; 
		if (i%10==0){ 
			System.out.println(); 
			continue; 
			}
			System.out.print(i); 
		} 
	}

區別:

  • break用於強行退出迴圈,不執行迴圈中剩餘的語句。(break語句也在switch語句中使用)

  • continue 語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。


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

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1. 講故事 前些天看到一個奇怪的 Function 函數,調用的是 C# 鏈接庫中的一個 UserLogin 方法,參考代碼如下: CREATE FUNCTION dbo.clr_UserLogin ( @name AS NVARCHAR(100), @password AS NVARC ...
  • 用 VSCode 打開項目目錄,創建 .vscode/launch.json 文件或者點擊調試視窗: 點擊添加配置可以生成預設的配置 runtimeExecutable: 可以指定對應的瀏覽器,路徑是你瀏覽器安裝的位置 url: 把訪問的 url 改為開發伺服器啟動的地址 進入調試視窗,點擊啟動: ...
  • Element Ul快速入門 Element Ul是基於Vue的一套桌面端組件庫,提前封裝好的Ul模板,方便開發者快速搭建一個網站前端界面 官網:https://element.eleme.cn/ 1.Element Ul安裝 在插件中,點擊添加插件 搜索element 安裝成功,界面如下所示 如果 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實現 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實現的功能也是本文要講解的有: ...
  • 時光飛逝,流年似水,讓我們倒帶 2022,迴首這跌宕起伏一年走過的 “升級之路”。 NutUI 表現如何? 成績單等著您打分! ...
  • 最近群里有這樣一個有意思的問題,大家在討論,使用 CSS 3D 能否實現如下所示的效果: 這裡的核心難點在於,如何利用 CSS 實現一個立體的數字?CSS 能做到嗎? 不是特別好實現,但是,如果僅僅只是在一定角度內,利用視覺障眼法,我們還是可以比較完美的還原上述效果的。 利用距離、角度及光影構建不一 ...
  • 在軟體研發過程中,往往隨著為了快速滿足業務要求的壓力,用戶需求的變更,軟體代碼的增多,以及版本的迭代,團隊成員的變化等等因素,導致一個軟體項目隨著時間推移,欠的技術債會越積越多,用戶使用容易出錯,部署流程也變得複雜。 ...
  • 摘要:究竟什麼樣的系統算是高併發系統?今天,我們就一起解密高併發業務場景下典型的秒殺系統的架構。 本文分享自華為雲社區《【高併發】秒殺系統架構解密,不是所有的秒殺都是秒殺(升級版)!!》,作者: 冰 河。 究竟什麼樣的系統算是高併發系統?今天,我們就一起解密高併發業務場景下典型的秒殺系統的架構。 電 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...