Java筆記02

鋼七連第4956個兵發表於2020-12-20

Java筆記02

1.Scanner物件

Scanner工具類用以獲取使用者的輸入。

基本語法:

Scanner s = new Scanner(System.in);

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

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        //建立一個Scanner物件,接受使用者的輸入
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收: ");

        //判斷使用者有沒有輸入字串
        if(scanner.hasNext()){
            String str = scanner.next();
             //String s = scanner.nextLine();  使用nextLine方法接收
            System.out.println("輸入的內容為: "+str);
        }
        //關閉IO流,防止佔用資源
        scanner.close();
    }
}

next()與nextLine()的區別

next():

  1. 一定要讀取到有效字元後才可以結束輸入。
  2. 對輸入有效字元之前的空格會自動忽略,只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
  3. next()不能得到帶有空格的字串

nextLine():

  1. 以Enter為結束符,即可以得到使用者輸入回車前的所有字元(包括空白)。

Scanner進階:

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {

        //輸入多個資料,求它們的總和與平均數,每輸入一個用回車確認,通過輸入非數字來結束當前的輸入並輸出結果
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int m = 0;
        while (scanner.hasNextDouble()){
            double s = scanner.nextDouble();
            m = m+1;
            sum = sum+s;
            System.out.println("第"+m+"次輸入了資料"+s+",當前總和為"+sum+"");
        }
        System.out.println("資料總和為"+sum);
        System.out.println("資料平均數為"+sum/m);
        scanner.close();

    }
}

2.Java的基本結構

​ 2.1順序結構

Java的基本結構就是順序結構,即按照程式的書寫順序一步一步的執行;順序結構是最簡單的演算法結構,程式碼按照由上到下的順序依次執行。

​ 2.2選擇結構

if單選擇結構

if(布林表示式){
    
}

if雙選擇結構

if(布林表示式){
    //滿足布林表示式
}else{ 
    //不滿足布林表示式
}

if多選擇結構

 if(布林表示式1){
           //如果滿足布林表示式1,則執行該部分程式碼
       }else if(布林表示式2){
           //如果滿足布林表示式2,則執行該部分程式碼
       }else if(布林表示式3){
           //如果滿足布林表示式3,則執行該部分程式碼
       }else {
           //如果上述布林表示式都不滿足,則執行該部分程式碼
       }

**注:**使用巢狀的if…else語句是合法的。即可以在另一個if或else if語句中使用if或者else if語句。

switch多選擇結構

switch case語句判斷一個變數與一系列值中某個值是否相等,每一個值稱為一個分支。jdk7之後switch語句也可支援String型別

(PS:IDEA2020好像可以支援拖拽開啟.class檔案了)

public class HelloWorld {
    public static void main(String[] args) {
        char grade = 'C';
        switch (grade){
            case'A':
                System.out.println("優秀");
                break;
            case'B':
                System.out.println("良好");
                break;
            case'C':
                System.out.println("及格");
                break;
            case'D':
                System.out.println("差");
                break;
            case'E':
                System.out.println("退學");
                break;
        }
    }
}
//break的意思是程式執行到當前這一case時是否停止  case穿透

​ 2.3迴圈結構

  • while迴圈
  • do…while迴圈
  • for迴圈

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

//大多數情況下會讓迴圈停止下來,設定一個讓表示式失效的方式 如a<0..
//少數情況下需要一直迴圈執行,如伺服器的請求響應監聽
//迴圈條件一直滿足程式就會一直執行,會造成死迴圈,平時編碼過程中應避免死迴圈。
while(判斷表示式){
    //迴圈程式碼
}
//計算1-100的和
public class HelloWorld {
    public static void main(String[] args) {
        int i = 0;
        int sum = 0;

        while (i<=100){
            sum+=i;
            i++;
        }
        System.out.println(sum);
    }
}

do…while迴圈

對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要迴圈體至少執行一次,即使這個條件不滿足,所以便有了do…while

//語法結構
do{
    
}while(表示式);
//從語法結構就可以看出do...while與while的區別在於滿足迴圈條件後要執行的那部分程式碼的執行順序
//while先判斷後執行
//do...while先執行後判斷

for迴圈

for迴圈語句是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構。for迴圈的執行次數是在執行前就確定的,語法結構:

//判斷條件為空的話就變成了死迴圈
for(起始引數;終止條件;引數的更新方式){
    //迴圈內容
}

練習1.計算0-100之間奇數和偶數的和

public class HelloWorld {
    public static void main(String[] args) {
        int oddSum = 0;
        int evenSum = 0;
		
        //快捷鍵100.for可快速生成i從0到100自加1的for迴圈語句
        for (int i = 1; i <= 100; i++) {
            if(i%2 != 0){
                oddSum+=i;
            }else{
                evenSum+=i;
            }
        }
        System.out.println("奇數的和為"+oddSum);
        System.out.println("偶數的和為"+evenSum);
    }
}

練習2.用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出三個

public class HelloWorld {
    public static void main(String[] args) {
       //用while或for迴圈輸出1-1000之間能被5整除的數,並且每行輸出三個
        for (int i = 1; i <= 1000; i++) {
            if (i%5 == 0){
                System.out.print(i+"\t");
            }
            //每三個換行 注意print和println的區別
            if (i%(5*3) == 0 ){
                System.out.println();
                //System.out.print("\n");
            }
        }
    }
}
//我自己的想法是另外定義一個用於計數的引數s,用它來實現每行輸出三個,但遠沒有教程中的思路巧妙!

練習3.用for迴圈輸出九九乘法表(兩個迴圈,分別表示乘法表中的兩個數,通過限制j的迴圈範圍刪掉重複的部分,最後調整輸出結構即可)

public class HelloWorld {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j+"*"+i+"="+(i*j)+"\t");
            }
            System.out.println();
        }
    }
}

增強for迴圈

public class HelloWorld {
    public static void main(String[] args) {
       int[] num = {10,20,30,40,50};
       //for迴圈列印陣列
        for(int i=0;i<num.length;i++){
            System.out.println(num[i]);
        }
        System.out.println("***********************");
        //增強for迴圈    遍歷num陣列,將值賦給x
        for(int x:num){
            System.out.println(x);
        }
    }
}

break,continue

  • break:在任何迴圈語句的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句。(break語句也在switch語句中使用)
  • continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
//break和continue的對比
public class HelloWorld {
    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            if(i == 10){
                //迴圈在i=10時終止
                break;
            }
            System.out.print(i+"\t");
        }
        System.out.println();
        for (int j = 0; j < 20; j++) {
            if(j == 10){
               // 跳過j=10的迴圈
                continue;
            }
            System.out.print(j+"\t");
        }
    }
}

章節練習:列印三角形

public class HelloWorld {
    public static void main(String[] args) {
        //5行的三角形
        for (int i = 1; i <= 5; i++) {
            //從5開始遞減迴圈並列印空格,為了形成三角的形狀
            for (int j = 5; j > i; j--) {
                System.out.print(" ");
            }
            //接著空白列印三角形的左半部分 即第一行輸出“*" 第二行輸出"**"...
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            //接著列印三角形的右半部分,迴圈中限制條件變成j<i,目的是使三角形的第一行只有一個"*"
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            //每一行構建完成後換行
            System.out.println();
        }
    }
}
//如果不理解這個思路,可以通過設定斷點Debug去看一下這個程式碼的執行流程,應該就能明白了。

相關文章