一、順序結(jié)構(gòu)
在Java語法中,順序結(jié)構(gòu)是一種基本的程序控制結(jié)構(gòu),用于按照代碼的編寫順序依次執(zhí)行語句。
順序結(jié)構(gòu)沒有條件或循環(huán)的判斷,它的執(zhí)行是線性的,從上到下依次執(zhí)行每條語句。
代碼示例:
public static void main(String[] args) {
// 第一條語句
System.out.println("這是第一條語句。");
// 第二條語句
System.out.println("這是第二條語句。");
// 第三條語句
System.out.println("這是第三條語句。");
// ... 其他語句
// 最后一條語句
System.out.println("這是最后一條語句。");
}
效果圖:
二、分支結(jié)構(gòu)
2.1 if 語句
在Java語法中,if語句是一種條件控制語句,用于根據(jù)一個(gè)布爾表達(dá)式的值(true或false)來執(zhí)行不同的代碼分支。
以下是 if 語句的幾種常見語法格式:
- 語法格式1:?jiǎn)蝹€(gè)if語句
if (condition) {
// 如果條件成立,執(zhí)行的代碼塊
}
- condition 是一個(gè)布爾表達(dá)式,它的值為true或false。
這是最基本的 if 語句格式,只包含一個(gè) if 條件和一個(gè)執(zhí)行代碼塊。如果條件滿足(即為true),則執(zhí)行代碼塊中的語句。
- 語法格式2 :if-else語句
if (condition) {
// 如果條件成立,執(zhí)行的代碼塊
} else {
// 如果條件不成立,執(zhí)行的代碼塊
}
if-else語句包含一個(gè) if 條件和兩個(gè)執(zhí)行代碼塊,當(dāng)條件滿足時(shí)執(zhí)行 if 代碼塊,否則執(zhí)行 else 代碼塊。
代碼示例1:判斷奇偶數(shù)
在IDEA中,代碼有時(shí)會(huì)顯示黃色的背景,這代表警告。
表示該區(qū)域的代碼永遠(yuǎn)為 false,
代碼中有個(gè)別警告沒有關(guān)系。
public static void main (String[]args){
int a = 10;
if (a % 2 != 0) {//黃色背景說明是警告(代碼中有個(gè)別警告沒有關(guān)系),表示永遠(yuǎn)為false。
System.out.println("奇數(shù)!");
} else {
System.out.println("偶數(shù)!");
}
}
效果圖:
- 語法格式3:if-else if-else語句(多重條件)
if (condition1) {
// 如果條件1成立,執(zhí)行的代碼塊
} else if (condition2) {
// 如果條件2成立,執(zhí)行的代碼塊
} else {
// 上述條件均不成立時(shí),執(zhí)行的代碼塊
}
if-else if-else語句用于處理多個(gè)條件情況,可以根據(jù)不同的條件執(zhí)行相應(yīng)的代碼塊。條件會(huì)按順序依次判斷,當(dāng)某個(gè)條件成立時(shí),執(zhí)行對(duì)應(yīng)的代碼塊。如果所有條件都不成立,則執(zhí)行最后的 else 代碼塊。
代碼示例2:使用if語句來檢查一個(gè)數(shù)值變量的正負(fù)性
public static void main(String[] args) {
int num = -1;
if (num > 0) { // 檢查num是否大于0
System.out.println(num + "是正數(shù)。");
} else if (num < 0) { // 如果num小于0
System.out.println(num + "是負(fù)數(shù)。");
} else { // 如果num等于0
System.out.println(num + "不是正數(shù)也不是負(fù)數(shù)。");
}
}
效果圖:
- 語法格式4:嵌套 if 語句
if (condition1) {
// 外層if代碼塊
if (condition2) {
// 內(nèi)層if代碼塊
}
}
在Java中,if語句可以嵌套使用。內(nèi)層if語句的條件判斷是在外層if語句的條件判斷為true的情況下才會(huì)執(zhí)行??梢愿鶕?jù)實(shí)際需要嵌套多個(gè)if語句。
代碼示例3:判斷是否為偶數(shù)
public static void main(String[] args) {
int num = 8;
if (num % 2 == 0) { // 如果num可以被2整除
if (num > 0) { // 如果num大于0
System.out.println(num + "是正偶數(shù)。");
} else if (num < 0) { // 如果num小于0
System.out.println(num + "是負(fù)偶數(shù)。");
} else { // 如果num等于0
System.out.println(num + "是偶數(shù)。");
}
} else { // 如果num不能被2整除
System.out.println(num + "不是偶數(shù)。");
}
}
效果圖:
[注意事項(xiàng)]:
- 分號(hào)問題
public static void main(String[] args) {
int num = 1;
if (num == 2);
{
System.out.println("Hello");
}
}
效果圖:
- 這里的 if 語句,多寫了一個(gè) 分號(hào),導(dǎo)致分號(hào)成為了 if 語句的語句體, 而 { } 中的代碼已經(jīng)成為了和一個(gè) if 無關(guān)的代碼塊。
2.2 switch 語句
switch語句由一個(gè)表達(dá)式和多個(gè)case分支組成。
語法格式:
switch (表達(dá)式) {
case 值1:
// 當(dāng)表達(dá)式的值等于值1時(shí)執(zhí)行的代碼
break;
case 值2:
// 當(dāng)表達(dá)式的值等于值2時(shí)執(zhí)行的代碼
break;
case 值3:
// 當(dāng)表達(dá)式的值等于值3時(shí)執(zhí)行的代碼
break;
// 可以有更多的case分支
default:
// 當(dāng)表達(dá)式的值不匹配任何case時(shí)執(zhí)行的代碼
}
//switch語句后面的代碼
在switch語句中,break語句的作用是結(jié)束當(dāng)前的case條件分支,并跳出switch語句,使程序執(zhí)行流程繼續(xù)到switch語句后面的代碼。
流程:
- 先計(jì)算表達(dá)式的值
- 和case依次比較,一旦有響應(yīng)的匹配就執(zhí)行該項(xiàng)下的語句,直到遇到break時(shí)結(jié)束
- 當(dāng)表達(dá)式的值沒有與所列項(xiàng)匹配時(shí),執(zhí)行default
代碼示例:根據(jù)day輸出星期
public static void main(String[] args) {
int day = 8;
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("無效的輸入");
}
}
效果圖:
注意事項(xiàng):
- break和default都不能省略
- 不能有兩個(gè)相同的case常量值
- switch的括號(hào)內(nèi)只能是如下類型的表達(dá)式:
基本類型:byte、char、short、int,注意不能是long類型
引用類型:String常量串、枚舉類型 (不能做switch的參數(shù)的數(shù)據(jù)類型: long double float boolean)
三、循環(huán)結(jié)構(gòu)
3.1 while 循環(huán)
while循環(huán)是Java中的一種基本的循環(huán)結(jié)構(gòu),它的作用是在滿足條件的情況下反復(fù)執(zhí)行一段代碼塊。
語法格式:
while (條件) {
// 循環(huán)體
}
其中條件是一個(gè)布爾表達(dá)式,表示循環(huán)的條件。
如果條件為真,則執(zhí)行循環(huán)體,然后再次檢查條件是否為真;
如果條件為假,則終止循環(huán),跳出while語句。
代碼示例1:輸出1-10之間的所有整數(shù)
public static void main (String[]args){
int num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}
}
效果圖:
代碼示例2:計(jì)算 1-100 的和
public static void main (String[]args){
int sum = 0; // 初始化和為0
int i = 1; // 循環(huán)變量起始值為1
while (i <= 100) {
sum += i; // 將當(dāng)前數(shù)加到sum中,相當(dāng)于 sum = sum + i
i++; // 循環(huán)變量自增
}
System.out.println("1到100的和為:" + sum);
}
效果圖:
代碼示例3: 計(jì)算 4 的階乘
public static void main (String[]args){
int i = 1;
int ret = 1;
while (i <= 4) {
ret *= i;
i++;
}
System.out.println(ret);
}
效果圖:
注意事項(xiàng):
- while()后面不能加分號(hào)(;)
public static void main(String[] args) {
int num = 1;
while (num <= 10); {
System.out.println(num);
num++;
}
}
如果加上分號(hào),代碼會(huì)一直處于運(yùn)行狀態(tài),但無任何輸出結(jié)果。
while 是一個(gè)空語句,實(shí)際的 { } 部分和循環(huán)無關(guān)。
此時(shí)循環(huán)條件 num <= 10 恒成立, 導(dǎo)致代碼死循環(huán),代碼會(huì)一直運(yùn)行而不會(huì)運(yùn)行{}中的內(nèi)容。
3.2 break
break語句在Java中用于提前結(jié)束循環(huán)。
代碼示例:找到 50 -100 中第一個(gè) 6 的倍數(shù)
public static void main(String[] args) {
int num = 50;
while (num <= 100) {
if (num % 6 == 0) {
System.out.println("找到 6 的倍數(shù):" + num);
break;//執(zhí)行到break語句,結(jié)束循環(huán)。
}
num++;
}
}
輸出結(jié)果:
找到 6 的倍數(shù):54
3.3 continue
在Java中,continue語句用于跳過當(dāng)前循環(huán)中剩余的代碼,直接開始下一次循環(huán)。
代碼示例:
public static void main(String[] args) {
int a = 1;
while (a <= 6) {
if (a == 2) {
a++; //這里也記得a++ 否則會(huì)死循環(huán)
continue;//結(jié)束下面的循環(huán) 執(zhí)行下一次循環(huán)
}
System.out.println(a);
a++;
}
}
效果圖:
3.4 for 循環(huán)
語法格式:
for (1.初始化;2.判斷條件;4.更新操作) {
3.循環(huán)體
}
-
1.初始化:在循環(huán)開始之前執(zhí)行,用于聲明和初始化循環(huán)變量初始值,只執(zhí)行一次。
-
2.判斷條件:在每次迭代之前進(jìn)行判斷,如果條件成立,則繼續(xù)執(zhí)行循環(huán)體,否則跳出循環(huán)。
-
3.循環(huán)體:循環(huán)體中包含要執(zhí)行的代碼塊或語句,它們將被循環(huán)執(zhí)行。
-
4.更新操作:在每次迭代之后執(zhí)行,用于更新循環(huán)變量的值。
執(zhí)行過程:
1234—>234—>234—>234—>234—>234—>…—>2為false,循環(huán)結(jié)束。
除卻1只執(zhí)行一次以外,其余在2為true時(shí)都執(zhí)行多次。
代碼示例1:輸出1-10之間的所有整數(shù)
public static void main(String[] args) {
for (int i = 1; i <= 10 ; i++) {
System.out.println(i);
}
}
效果圖:
代碼示例2:計(jì)算 1-100 的和
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100 ; i++) {
sum += i;
}
System.out.println("sum = "+ sum);
}
效果圖:
代碼示例3: 計(jì)算 4 的階乘
public static void main(String[] args) {
int ret = 1;
for (int i = 1; i <= 4; i++) {
ret *= i;
}
System.out.println("ret = "+ ret);
}
效果圖:
注意事項(xiàng):
- 如果for語句中什么都不寫,就會(huì)進(jìn)入死循環(huán)。
public static void main(String[] args) {
int sum = 0;
for (; ; ) {//死循環(huán)
System.out.println("sum = "+ sum);
}
}
效果圖:這里就會(huì)一直運(yùn)行,不會(huì)停止。
3.5 do while 循環(huán)
先執(zhí)行循環(huán)語句, 再判定循環(huán)條件,如果循環(huán)條件為真,則繼續(xù)執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。
語法格式:
do {
// 循環(huán)體
} while (循環(huán)條件);//這里的分號(hào)一定要
代碼示例:打印 0 - 5
public static void main(String[] args) {
int i = 0;//先行后判
do {
System.out.println(i);
i++;
} while (i <= 5);
}
效果圖:
注意: do while 循環(huán)最后的分號(hào)一定要寫。
四、輸入輸出
4.1 輸出到控制臺(tái)
代碼示例:
public static void main(String[] args) {
System.out.println("輸出且換行");
System.out.print("輸出且不換行 ");
System.out.printf("%s\n", "格式化輸出,和C語言一樣。");//%s表示以字符串類型輸出
}
效果圖:
從圖中可見,第一行代碼自動(dòng)換行了;而第二行代碼沒有換行,導(dǎo)致第三行代碼與第二行代碼處于同一行。
- println 輸出的內(nèi)容自帶 \n
- print 不帶 \n
- printf 的格式化輸出方式和 C 語言的 printf 是基本一致的
4.2 從鍵盤上輸入
在Java中,從鍵盤上輸入可以使用Scanner類來實(shí)現(xiàn)。
代碼示例:
import java.util.Scanner; // 需要導(dǎo)入 util 包
這只寫一次,下面的代碼默認(rèn)都導(dǎo)入了包
一般情況下IEDA都會(huì)自動(dòng)為我們導(dǎo)入包
如果沒有導(dǎo)入,需要手動(dòng)輸入代碼導(dǎo)入
public class Test {
public static void main(String[] args) {
// 創(chuàng)建 Scanner 對(duì)象
Scanner scanner = new Scanner(System.in);
// 讀取字符串
System.out.print("請(qǐng)輸入一個(gè)字符串:");
String str = scanner.nextLine();//讀取用戶輸入的字符串
System.out.println("你輸入的字符串是:" + str);
// 讀取整數(shù)
System.out.print("請(qǐng)輸入一個(gè)整數(shù):");
int num = scanner.nextInt();//讀取用戶輸入的整數(shù)
System.out.println("你輸入的整數(shù)是:" + num);
// 關(guān)閉 Scanner 對(duì)象
scanner.close();
}
}
效果圖:
在上面的代碼中,我們首先創(chuàng)建了一個(gè) Scanner 對(duì)象并傳入 System.in 來獲取用戶從鍵盤中輸入的值。
然后使用 nextLine() 方法讀取字符串。使用 nextInt() 方法讀取整數(shù)。最后,用 .close() 關(guān)閉 Scanner 對(duì)象以釋放資源。
4.2.1 next() 和 nextLine()
在 Java 中,Scanner 類提供了兩種方法:next() 和 nextLine() 用于讀取用戶輸入的字符串。
- next() 方法:讀取輸入的一個(gè)單詞,當(dāng)遇到空格時(shí),next() 方法會(huì)停止讀取輸入。
- nextLine()方法:讀取整行輸入,直到遇到換行符為止。
代碼示例1:
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入姓名:");
String name = scanner.next();//next遇到空格就結(jié)束了,與nextLine()不同
System.out.println(name);
String name2 = scanner.next();//讀取了空格后的字符串
System.out.println(name2);
效果圖:
第二個(gè)輸入代碼讀取了空格后面的李四,第一個(gè)讀取代碼被張三后面的空格結(jié)束了。
代碼示例2:
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入年齡:");
int age = scanner.nextInt();
System.out.println(age);
System.out.println("請(qǐng)輸入姓名:");
//此時(shí),上面輸完之后輸入的 回車 會(huì)被下面讀取到
//就導(dǎo)致下面的nextLine()無法輸入
String name = scanner.nextLine();
System.out.println(name);
效果圖:
解決方法:
在第一個(gè)輸入后面加一行 scanner.nextLine(); 接收一個(gè)回車鍵,這樣下面的輸入就不會(huì)接收到回車鍵了。
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入年齡:");
int age = scanner.nextInt();
System.out.println(age);
scanner.nextLine(); //接收一個(gè)回車鍵
System.out.println("請(qǐng)輸入姓名:");
//此時(shí),上面輸完之后輸入的 回車 會(huì)被下面讀取到
//就導(dǎo)致下面的nextLine()無法輸入
String name = scanner.nextLine();
System.out.println(name);
效果圖:
4.2.2 hasNextInt()
代碼示例:
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
while (scanner.hasNextInt()) {//表示是否有下一個(gè)數(shù),有輸入就執(zhí)行
System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
int n = scanner.nextInt();
System.out.println("n = " + n); //ctrl+D 結(jié)束循環(huán)
}
效果圖:
從代碼中不難看出hasNextInt()是一個(gè)返回值為布爾類型的方法。
這個(gè)時(shí)候?yàn)榱俗C明我們的猜想,可以按住鍵盤上左下角 ctrl + 單擊,可以查看源代碼。
源代碼界面:
在學(xué)習(xí)過程中我們也需要看得懂部分源代碼,方便我們更好的理解和學(xué)習(xí)java。
小提示:
在IDEA中,如果代碼數(shù)量過多,想要查看前面的代碼,來寫后面的代碼時(shí)。
一直滾動(dòng)鼠標(biāo)會(huì)很費(fèi)時(shí)間,不方便。
這時(shí)候就可以利用到一個(gè)開多窗口的功能,實(shí)現(xiàn)下面的效果:
實(shí)現(xiàn)方法:
- 右鍵點(diǎn)擊我們自己的.java文件。
- 單擊Split Right
這里以我的Test .java為例文章來源:http://www.zghlxwxcb.cn/news/detail-744864.html
當(dāng)然,開2個(gè)以上的窗口也是相同的操作方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-744864.html
到了這里,關(guān)于Java-邏輯控制語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!