Java基礎語法:邏輯控制

一、邏輯控制語句

1. 順序結構

像我們寫的代碼,執行時會按照從上到下一行一行的執行。這就是順序結構,不同的順序,結果可能就不一樣。如

System.out.println(1)
System.out.println(2)    
System.out.println(3)

該代碼結果為 1(換行)2(換行)3,但是如果把順序改變結果就變瞭

System.out.println(2)
System.out.println(3)    
System.out.println(1)

該代碼結果就變為 2(換行)3(換行)1

2. 分支結構

2.1 if 語句

和 C 語言一樣,在 Java 中 if 語句也有三種基本的形式

形式一

if(佈爾表達式){
    // 條件滿足時執行的代碼
}

形式二

if(佈爾表達式){
    // 條件滿足時執行的代碼
}else{
    // 條件不滿足時執行的代碼
}

形式三

if(佈爾表達式1){
    // 條件1滿足時執行的代碼
}else if(佈爾表達式2){
    // 條件2滿足時執行的代碼
}else{
    // 條件都不滿足時執行的代碼
}

但是從形式上我們就可以看出還是有一些不同的

1.條件表達式必須是佈爾值,不能像 C 語言一樣直接使用一個數值,如

int a = 10;
if(a){
    System.out.println(a);
}

這種代碼就是錯的,條件必須是佈爾值

int a = 10;
if(a > 0){
    System.out.println(a);
}

這種代碼就是正確的

2.代碼風格問題,比如我寫 C 語言時喜歡把一對大括號並列在行首。但是在 java 中更推薦上述三種形式那樣的風格,將 { 放在 if 或 else 同一行

3.還要註意懸垂 else 問題,記住 else 是與 最接近的 if 匹配。如

int a = 2;
if(a>0)
	if(a>10)
		System.out.println("a > 10");
else 
	System.out.println("a > 0 && a <= 10");

我們要知道,最下面的 else 是與與它最近的 if 匹配的

2.2 switch 語句

Java 中的 switch 語句和 C 語言中的幾乎一樣,大傢如果不太熟悉 switch 以及該章所講解的一些邏輯結構可以去看看我寫的 C語言三大語句註意事項 。但是既然不是完全一樣,那哪裡有區別呢?

在 Java 中,switch(表達式) 中的表達式是有類型限制的。

它隻能使用:整數(隻包括 byte、short、int)、字符(char)、字符串(String)、枚舉類型

3. 循環結構

3.1 while 循環

舒服,Java 的 while 循環和 C 語言也是極其類似,隻有一個小的差異

while (表達式) 中的表達式必須是佈爾值

3.2 break

break 的功能是:讓最靠近包裹它的整個循環提前結束。這也是和 C 語言是一樣的

3.3 continue

continue 的功能是:跳過本次循環,立即進入下次循環。這也是和 C 語言是一樣的

3.4 for 循環

Java 中的 for 循環和 C 語言中的也很類似,隻有一個差異

for(表達式1;表達式2;表達式3) 中的表達式2是循環的判斷條件,要使用佈爾值

3.5 do while 循環

Java 中的 do while 循環也是和 C 語言很類似,隻有一個差異

while 中的循環條件隻能是佈爾值

但是一般不推薦使用,因為它至少會執行一次循環,不註意可能會犯錯

二、輸入輸出方式

1. 輸出到控制臺

1.基本語法

System.out.println(msg);		// 輸出一個字符串,自帶換行
System.out.print(msg);			// 輸出一個字符串,不帶換行
System.out.printf(format,msg);	// 格式化輸出,括號內內容類似於 C 語言的 printf

2.代碼示例

int a = 10;
System.out.println(a);			// 輸出 a,自帶換行
System.out.print(a);			// 輸出 a,不帶換行
System.out.printf("%d\n",a);	// 格式化輸出,括號內內容類似於 C 語言的 printf

3.格式化輸出表(隨用隨查)

轉換符 類型 例子 輸出結果
d 十進制整數 (“%d”,100) 100
x 十六進制整數 (“%x”,100) 64
o 八進制整數 (“%o”,100) 144
f 定點浮點數 (“%f”,100f) 100.000000
e 指數浮點數 (“%e”,100f) 1.000000e+02
g 通用浮點數 (“%g”,100f) 100.000
a 十六進制浮點數 (“%a”,100) 0x1.9p6
s 字符串 (“%s”,100) 100
c 字符 (“%d”,‘1′) 1
b 佈爾值 (“%b”,100) true
h 散列碼 (“%h”,100) 64
% 百分號 (“%.2f%%”,2/7f) 0.29%

2. 從鍵盤輸入

1.讀入一個字符(不推薦使用)

直接使用 System.in.read() 可以讀入一個字符,但是需要搭配異常處理。如果不搭配異常,如下面代碼就會編譯出錯

public static void main(String[] args) {
        System.out.print("Enter a char:");
        char i = (char)System.in.read();
        System.out.println("The char is :" + i);
    }

我們需要將鼠標放到 read 上面,再按住 Alt + Enter 鍵就會出現

在這裡插入圖片描述

再點擊第一個或者第二個就不會報錯瞭。這裡其實是處理瞭異常,但是一個簡單的讀入字符就要這麼復雜所以不推薦使用。

2.使用 Scanner 讀取字符/字符串/整數/浮點數/佈爾值

1.首先需要導入 util 包 import java.util.Scanner; ,在 IDEA 中,其可以通過輸入 Scanner 後直接回車快速導入

2.然後再構造一個 Scanner 對象並與”標準輸入流“ System.in 關聯: Scanner 對象名 = new Scanner(System.in);

3.再就可以通過 Scanner 類的各種方法實現輸入操作瞭

import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int a = in.nextInt();			//讀入一個整數
        double b = in.nextDouble();		//讀入一個浮點數
        boolean c = in.nextBoolean();	//讀入一個佈爾值
        String s = in.next();			//讀入一個字符串
    }
}

但是要註意,上述讀入字符串是按空白符當作分隔符的,故隻能讀入第一個空格之前的字符。如果想要讀取該行的所有字符(包含空格),應該使用

String s = in.nextLine();

但是使用這個方法還是有很大的缺陷,如果這行代碼上面還有其他讀入的語句,可能這行代碼就不會實行。因為上一行的回車可能被它讀入,直接這行結束。因此,隻能將其放在讀入代碼的第一個或者在它前面加一個

in.nextLine();

來讀取掉之前的回車。

3.我們知道在 C 語言中可以寫類似於這樣的代碼輸入多組數據

int a;
while(scanf("%d",&a) != EOF)
{
    // 內容
}

在 C++ 中我們也可以寫類似於這樣的代碼輸入多組數據

int a;
while(cin>>a)
{
    // 內容
}

那麼在 Java 中怎麼做呢?代碼如下

Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
    int a = in.nextInt();
    // 內容
}

並且在 IDEA 上我們可以手動輸入 Ctrl + D 結束,在 Windows 的 cmd 上 我們手動輸入 Ctrl + Z 結束,在 Linux 或 Mac 上,輸入 Ctrl + D 結束

三、猜數字遊戲

學 C 語言的時候我們可能都接觸過隨機數的生成,或者直接寫一個猜隨機數的遊戲。那麼使用 Java 該怎麼寫呢?

1.首先我們要知道在 Java 中隨機數是怎麼生成的。

1.首先需要導入 util 包 import java.util.Random; ,在 IDEA 中,其可以通過輸入 Random 後直接回車快速導入

2.然後通過 Random 類中的方法生成我們想要的,如

import java.util.Random;

public class TestDemo {
    public static void main(String[] args) {
        Random random = new random();	// 默認隨機種子是系統時間
        int rand = random.nextInt(bound:100) + 1;
        // random.nextInt(bound:100) 是生成[0,100)間的隨機整數
    }
}

接下來就是很簡單瞭,隻要我們輸入的數字與隨機數字進行一下比較。直到判斷正確再退出就可。故最終的代碼是

public class TestDemo {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        int rand = random.nextInt(100) + 1;
        while (true){
            System.out.print("請輸入你所猜測的數字:");
            int num = scanner.nextInt();
            if(num == rand){
                System.out.println("恭喜你,猜對瞭!");
                break;
            }else if(num < rand){
                System.out.println("很遺憾,你猜的數字小瞭!");
            }else{
                System.out.println("很遺憾,你猜的數字大瞭!");
            }
        }
    }
}

四、總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: