Java之邏輯控制三大結構使用及說明
邏輯控制分為三部分,分別為順序執(zhí)行,選擇執(zhí)行以及循環(huán)執(zhí)行
一、順序執(zhí)行(順序結構)
即順序執(zhí)行代碼,這部分沒有什么特別要說的就簡單概括一下
順序執(zhí)行是java中的默認執(zhí)行程序,有代碼編寫順序決定執(zhí)行流程,說人話就是從上到下,從左到右依次按順序運行(沒有特殊控制結構的前提下)
那么,何為特殊控制結構呢?
特殊控制結構有分支,循環(huán),線程等,接下來我會詳細分析這些
二、選擇執(zhí)行 (分支結構) if switch
1.if 語句
語法格式1
if(布爾表達式){
// 語句
}語法格式2
if(布爾表達式){
// 語句1
}else{
// 語句2
}語法格式3
if(布爾表達式1){
// 語句1
}else if(布爾表達式2){
// 語句2
}else{
// 語句3
}2.練習
1.判斷一個數字是奇數還是偶數
int num = 10;
if (num % 2 == 0) {
System.out.println("num 是偶數");
} else {
System.out.println("num 是奇數");
}2.判斷一個數字是正數,負數,還是零
int num = 10;
if (num > 0) {
System.out.println("正數");
} else if (num < 0) {
System.out.println("負數");
} else {
System.out.println("0");
}3.判斷一個年份是否為閏年
int year = 2000;
if (year % 100 == 0) {
// 判定世紀閏年
if (year % 400 == 0) {
System.out.println("是閏年");
} else {
System.out.println("不是閏年");
}
} else {
// 普通閏年
if (year % 4 == 0) {
System.out.println("是閏年");
} else {
System.out.println("不是閏年");
}
}3.switch 語句
執(zhí)行流程:
1. 先計算表達式的值
2. 和case依次比較,一旦有響應的匹配就執(zhí)行該項下的語句,直到遇到break時結束
3. 當表達式的值沒有與所列項匹配時,執(zhí)行default
【注意事項】
多個case后的常量值不可以重復
switch的括號內只能是以下類型的表達式:
- 基本類型:byte、char、short、int,注意不能是long類型
- 引用類型:String常量串、枚舉類型
switch 雖然支持嵌套, 但是很丑,一般不推薦~
三、循環(huán)執(zhí)行 (循環(huán)結構) while for do while
1.while 循環(huán)
基本語法格式:
while(循環(huán)條件){
循環(huán)語句;
}循環(huán)條件為 true, 則執(zhí)行循環(huán)語句; 否則結束循環(huán)
代碼示例:計算 1! + 2! + 3! + 4! + 5!
int num = 1;
int sum = 0;
// 外層循環(huán)負責求階乘的和
while (num <= 5) {
int factorResult = 1;
int tmp = 1;
// 里層循環(huán)負責完成求階乘的細節(jié).
while (tmp <= num) {
factorResult *= tmp;
tmp++;
}
sum += factorResult;
num++;
}
System.out.println("sum = " + sum);注意事項
1. 和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { }
2. 和 if 類似, while 后面的 { 建議和 while 寫在同一行.
3. 和 if 類似, while 后面不要多寫 分號, 否則可能導致循環(huán)不能正確執(zhí)行.
2.break
能讓循環(huán)提前結束
代碼示例: 找到 100 - 200 中第一個 3 的倍數
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍數, 為:" + num);
break;
}
num++;
}
// 執(zhí)行結果
找到了 3 的倍數, 為:102執(zhí)行到break就會讓循環(huán)結束
3.continue
可以跳過此次循環(huán)立即進入下一循環(huán)
代碼示例: 找到 100 - 200 中所有 3 的倍數
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 這里的 ++ 不要忘記! 否則會死循環(huán).
continue;
}
System.out.println("找到了 3 的倍數, 為:" + num);
num++;
}執(zhí)行到 continue 語句的時候, 就會立刻進入下次循環(huán)(判定循環(huán)條件), 從而不會執(zhí)行到下方的打印語句.
4.for 循環(huán)
【注意事項】 (和while循環(huán)類似)
1. 和 if 類似, for 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句. 建議還是加上 { }
2. 和 if 類似, for 后面的 { 建議和 while 寫在同一行.
3. 和 if 類似, for 后面不要多寫 分號, 否則可能導致循環(huán)不能正確執(zhí)行.
4. 和while循環(huán)一樣,結束單趟循環(huán)用continue,結束整個循環(huán)用break
5.do while 循環(huán)
先執(zhí)行循環(huán)語句, 再判定循環(huán)條件,循環(huán)條件成立則繼續(xù)執(zhí)行,否則循環(huán)結束。
【注意事項】
1. do while 循環(huán)最后的分號不要忘記
2. 一般 do while 很少用到, 更推薦使用 for 和 while.
四、輸入輸出
基本語法
System.out.println(msg); // 輸出一個字符串, 帶換行 System.out.print(msg); // 輸出一個字符串, 不帶換行 System.out.printf(format, msg); // 格式化輸出
1,println 輸出的內容自帶 \n, print 不帶 \n
2,printf 的格式化輸出方式和 C 語言的 printf 是基本一致的

這個表格沒必要記住, 用到的時候根據需要查一下就行了
五、從鍵盤輸入
使用 Scanner 讀取字符串/整數/浮點數
import java.util.Scanner; // 需要導入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你的姓名:");
String name = sc.nextLine();
System.out.println("請輸入你的年齡:");
int age = sc.nextInt();
System.out.println("請輸入你的工資:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年齡:"+age+"\n"+"工資:"+salary);
sc.close(); // 注意, 要記得調用關閉方法
// 執(zhí)行結果
請輸入你的姓名:
張三
請輸入你的年齡:
18
請輸入你的工資:
1000
你的信息如下:
姓名: 張三
年齡:18
工資:1000.0使用 Scanner 循環(huán)讀取 N 個數字,并求取其平均值
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = 0;
while (sc.hasNextInt()) {
int tmp = sc.nextInt();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
// 執(zhí)行結果
10
40.0
50.5
^Z
sum = 150.5
avg = 30.1注意事項
當循環(huán)輸入多個數據的時候, 使用 ctrl + z 來結束輸入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)
六、猜數字游戲
要求:
系統(tǒng)自動生成一個隨機整數(1-100), 然后由用戶輸入一個猜測的數字. 如果輸入的數字比該隨機數小, 提示 "低了", 如果輸入的數字比該隨機數大, 提示 "高了" , 如果輸入的數字和隨機數相等, 則提示 "猜對了
?
import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默認隨機種子是系統(tǒng)時間
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);
// System.out.println("toGuess: " + toGuess);
while (true) {
System.out.println("請輸入要輸入的數字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜對了");
break;
}
}
sc.close();
}
}?總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot中application.properties與application.yml區(qū)別小結
本文主要介紹了SpringBoot中application.properties與application.yml區(qū)別小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-10-10
Spring中使用自定義ThreadLocal存儲導致的坑及解決
這篇文章主要介紹了Spring中使用自定義ThreadLocal存儲導致的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Springboot集成Actuator監(jiān)控功能詳解
這篇文章主要介紹了Springboot集成Actuator監(jiān)控功能詳解,有時候我們想要實時監(jiān)控我們的應用程序的運行狀態(tài),比如實時顯示一些指標數據,觀察每時每刻訪問的流量,或者是我們數據庫的訪問狀態(tài)等等,這時候就需要Actuator了,需要的朋友可以參考下2023-09-09
淺談Java中SimpleDateFormat 多線程不安全原因
SimpleDateFormat是Java中用于日期時間格式化的一個類,本文主要介紹了淺談Java中SimpleDateFormat 多線程不安全原因,感興趣的可以了解一下2024-01-01

