??前面的話??
本篇文章帶大家認識Java程式邏輯控制結構,再復雜的程式都是離不開邏輯控制,
本文章除了Java程式的輸入,分支結構與回圈結構與C語言差不多,只是Java中判斷運算式的值必須是boolean型別,不過Java中沒有goto,目前僅僅作為保留字,
參考博主歷史博文(非常詳細):C語言中的選擇與輪回,選擇結構與回圈結構
📒博客主頁:未見花聞的博客主頁
🎉歡迎關注🔎點贊👍收藏??留言📝
📌本文由未見花聞原創,CSDN首發!
📆首發時間:🌴2021年10月20日🌴
??堅持和努力一定能換來詩與遠方!
💭參考書籍:📚《Java核心技術卷1》,📚《Java核心技術卷2》,📚《Java編程思想》
💬參考在線編程網站:🌐牛客網🌐力扣
🙏作者水平很有限,如果發現錯誤,一定要及時告知作者哦!感謝感謝!
博主的碼云gitee,平常博主寫的程式代碼都在里面,
📌導航小助手📌
- 🍀1.Java程式的輸入
- 🍀2.Java程式的分支結構
- 🌺2.1if...else
- 🌺2.2switch
- 🍀3.Java程式的回圈結構
- 🌺3.1while回圈
- 🌺3.2for回圈
- 🌺3.3do...while回圈
- 🌺3.4break與continue

🍀1.Java程式的輸入
在Java當中,我們是使用Scanner來進行資料的自定義輸入,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//System.in 表示從鍵盤輸入
System.out.println("請輸入一個字串:");
String str = sc.nextLine();//由于Java的輸入做的很粗糙,有一些bug,比如如果先讀數字在讀字串,字串就讀不了了,所以建議先讀字串再讀數字
System.out.println(str);
System.out.println("請輸入一個整數:");
int a = sc.nextInt();//整型輸入呼叫nextInt,如果是double 則呼叫nextDouble,一行字串建議使用nextLine,以空格隔開的字串建議next
System.out.println(a);
System.out.println("請輸入一個小數:");
double b = sc.nextDouble();
System.out.println(b);
}
請輸入一個字串:
weijianhuawen
weijianhuawen
請輸入一個整數:
2
2
請輸入一個小數:
3.14
3.14
Process finished with exit code 0
如果需要做多組輸入的oj題
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
//比如需要輸入多行輸入字串
String str = sc.nextLine();
System.out.println(str);
}
}

在編譯器中運行,如需正常退出程式,需輸入ctrl+D,
🍀2.Java程式的分支結構
🌺2.1if…else

🌹分支結構首先想到的就是if陳述句了,第一種用法就是單獨的if判斷陳述句,
語法結構
if (布爾運算式)
{
陳述句;
}
public static void main(String[] args) {
int n = 99;
if (n == 99) {
System.out.println(99);
}
}
🌹第二種用法就是單if…else分支結構,
語法結構
if (布爾運算式)
{
陳述句1;
}
else
{
陳述句2;
}
public static void main(String[] args) {
int n = 99;
if (n == 99) {
System.out.println(99);
}else {
System.out.println(88);
}
}
🌹第三種用法就是多if…else if…else…分支結構,
語法結構
if (布爾運算式1)
{
陳述句1;
}
else if (布爾運算式2)
{
陳述句2;
}
...
//else if數量無限制,最后的else可以用也可以不用
else
{
陳述句n;
}
public static void main(String[] args) {
int n = 99;
if (n == 99) {
System.out.println(99);
}else if (n == 98) {
System.out.println(98);
}else if (n == 97) {
System.out.println(97);
} else {
System.out.println(88);
}
}
🌹例題 根據年齡, 來列印出當前年齡的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
public static void main1(String[] args) {
//1. 根據年齡, 來列印出當前年齡的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int age= scan.nextInt();
if (age <= 18) {
System.out.println("少年!");
}else if (age <= 28) {
System.out.println("青年!");
}else if (age <= 55){
System.out.println("中年!");
}else {
System.out.println("老年!");
}
}
}
當然Java當中也支持嵌套分支陳述句,不過要注意使用嵌套結構需要注意if與else的配對關系,else總是與它上面的最近的未配對的if配對,所以在寫分支與回圈陳述句時,不論幾句都應該加上花括號,

🌺2.2switch
switch(整數|列舉|字符|字串){
case 內容1 : {
內容滿足時執行陳述句;
[break;]
}
case 內容2 : {
內容滿足時執行陳述句;
[break;]
}
...
default:{
內容都不滿足時執行陳述句;
[break;]
}
}
注意事項1 break 不要遺漏, 否則會失去 “多分支選擇” 的效果,
注意事項2 switch 中的值只能是 整數|列舉|字符|字串,
注意事項3 switch 不能表達復雜的條件,如分支回圈結構中使用的復合判斷陳述句,
注意事項4 switch 雖然支持嵌套, 但是很丑,
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("星期一!");
break;
case 2:
System.out.println("星期二!");
break;
case 3:
System.out.println("星期三!");
break;
case 4:
System.out.println("星期四!");
break;
case 5:
System.out.println("星期五!");
break;
case 6:
System.out.println("星期六!");
break;
case 7:
System.out.println("星期日!");
break;
default:
System.out.println("錯誤!");
break;
}

🌹例題 Java中switch陳述句運算式不支持哪些資料型別?
long,double,float,boolean及其包裝類,
🍀3.Java程式的回圈結構
🌺3.1while回圈

while(回圈條件){
回圈陳述句;
}
回圈條件為 true, 則執行回圈陳述句; 否則結束回圈.
🌹例題 計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,
public static void main7(String[] args) {
//7.計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,
int n = 100;
double sum = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 1) {
sum += 1.0 / i;
}else {
sum -= 1.0 / i;
}
}
System.out.println(sum);
}

🌺3.2for回圈

for(運算式1;運算式2;運算式3){
回圈體;
}
運算式1: 用于初始化回圈變數.
運算式2: 回圈條件.
運算式3: 更新回圈變數.
- “運算式1”可以省略,即不設定初值,但運算式1后的分號不能省略,例如: for(;i<=100;i++),應當注意:由于省略了運算式1,沒有對回圈變數賦初值,因此,為了能正常執行回圈,應在for陳述句之前給回圈變數賦以初值,
- 運算式2也可以省略,即不用運算式2來作為回圈條件運算式,不設定和檢查回圈的條件,此時回圈無終止地進行下去,也就是認為運算式2始終為真,
- 運算式3也可以省略,但此時程式設計者應另外設法保證回圈能正常結束,
- 甚至可以將3個運算式都可省略,即不設初值,不判斷條件(認為運算式2為真值),回圈變數也不增值,無終止地執行回圈體陳述句,顯然這是沒有實用價值的,
- 運算式1可以是設定回圈變數初值的賦值運算式,也可以是與回圈變數無關的其他運算式,運算式3也可以是與回圈控制無關的任意運算式,但不論怎樣寫for陳述句,都必須使回圈能正常執行,
- 運算式1和運算式3可以是一個簡單的運算式,也可以是逗號運算式,即包含一個以上的簡單運算式,中間用逗號間隔,
- 運算式2關系運算式或邏輯運算式,型別必須是
boolean, - for陳述句的回圈體可為空陳述句,把本來要在回圈體內處理的內容放在運算式3中,作用是一樣的,可見for陳述句功能強,可以在運算式中完成本來應在回圈體內完成的操作,
🌹執行順序:
運算式1 -> 運算式2 -> 回圈體陳述句 -> 運算式3.
🌹例題 撰寫程式數一下 1到 100 的所有整數中出現多少個數字9,
public static void main8(String[] args) {
//8. 撰寫程式數一下 1到 100 的所有整數中出現多少個數字9,
int n = 100;
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (i % 10 == 9) {
cnt++;
}
if (i / 10 == 9) {
cnt++;
}
}
System.out.println(cnt);
}
當然,回圈也支持嵌套,

🌺3.3do…while回圈

do{
回圈陳述句;
}while(布爾運算式);
int num = 12;
do {
System.out.println(num);
num++;
} while (num <= 10);

回圈至少執行一次,使用的場景有限,所以不是經常使用,
🌺3.4break與continue

| 名稱 | break | continue |
|---|---|---|
| 作用 | 使流程跳到回圈體之外,接著執行回圈體下面的陳述句, | 結束本次回圈,即跳過回圈體中下面尚未執行的陳述句,如果是for回圈,轉到回圈體結束點之前,接著執行for陳述句中的“運算式3”,然后進行下一次是否執行回圈的判定, |
| 注意 | break陳述句只能用于回圈陳述句和switch陳述句之中,而不能單獨使用, | continue陳述句只能用于回圈陳述句之中,而不能單獨使用, |
continue陳述句只結束本次回圈,而非終止整個回圈,break陳述句結束整個回圈,不再判斷執行回圈的條件是否成立,

🌹留給讀者的一道題:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327972.html
標籤:java
上一篇:這是升級標準庫鎖的有效方法嗎?
