1. 程式人生 > 其它 >第三天 Scanner和流程控制

第三天 Scanner和流程控制

Java流程控制

使用者互動Scanner

package com.zhang.scanner;

import java.util.Scanner;

public class Demo01 {

    public static void main(String[] args) {
        //建立一個掃描器物件,接收鍵盤資料
        Scanner scan = new Scanner(System.in);
        System.out.println("使用next方式接收");
        //判斷使用者有沒有輸入字串
        if(scan.hasNext()){
            //接收使用者的輸入
            String str =scan.next(); // 程式會等待使用者輸入完畢
            System.out.println("輸入的內容為:"+str);
        }
        //凡是IO流的類如果不關閉,會一直佔用資源。養成好習慣,用完就關掉
        scan.close();
    }
}

package com.zhang.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用NextLine接收:");
        if (scanner.hasNextLine()){ // 判斷是否還有輸入
            String str = scanner.nextLine();
            System.out.println("輸出內容為:"+str);
        }
        scanner.close();
    }
}
package com.zhang.scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0,x;
        int m = 0;
        System.out.println("輸入數字");
        while (scanner.hasNextDouble()){//輸入是否為數字
            x = scanner.nextDouble();
            sum+=x;
            m++;
            System.out.println("你輸入了第"+m+"個數"+x);
        }
        scanner.close();
        System.out.println("總共輸入了"+m+"個數,平均值為"+(sum/m)+",和為"+sum);
    }
}

順序結構

選擇結構

if單選擇結構

package com.zhang.struct;

import java.util.Scanner;

public class IfDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入內容");
        String s = scanner.nextLine();
        //s.equals 字串比較函式
        if(s.equals("Hello")){//單項選擇結構
            System.out.println(s);
        }
        System.out.println("END");
        scanner.close();
    }
}

if雙選擇結構

package com.zhang.struct;

import java.util.Scanner;

public class IfDemo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入成績");
        int score = scanner.nextInt();
        //小於60不及格
        if(score>=60){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
        scanner.close();
    }
}

if多選擇結構

只會選擇其中一個分支執行

package com.zhang.struct;

import java.util.Scanner;

public class IfDemo03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入成績");
        int score = scanner.nextInt();
        if(score==100){
            System.out.println("滿分");
        }else if(score<100 && score>=90){
            System.out.println("A級");
        }else if(score<90 && score>=80){
            System.out.println("B級");
        }else if(score<80 && score>=60){
            System.out.println("C級");
        }else if(score<60 && score >=0){
            System.out.println("D級");
        }else{
            System.out.println("成績不合法");
        }
        scanner.close();
    }
}

巢狀的if結構

switch多選擇結構

package com.zhang.struct;

import java.util.Scanner;

public class SwitchDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String grade = scanner.next();
        // case穿透,匹配項沒有break,會執行之後的所有語句
        switch (grade){ // switch 匹配一個具體的值
            case  "A":
                System.out.println("優秀");
                break; // 可選
            case  "B":
                System.out.println("良好");
                break;
            case  "C":
                System.out.println("一般");
                break;
            case  "D":
                System.out.println("差");
                break;
            default: // 可選
                System.out.println("未知等級");
                break;
        }
    }
}

迴圈結構

迴圈有以下三種:

while迴圈

package com.zhang.struct;

public class WhileDemo02 {
    public static void main(String[] args) {
        //1+2+3+..+100的和
        int num = 0;
        double sum = 0;
        while (num<100){
            num++;
            sum+=num;
        }
        System.out.println(sum);
    }
}

do...while迴圈

package com.zhang.struct;

public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a = 0;
        while (a<0){    //不會執行
            a++;
            System.out.println(a);
        }
        System.out.println("=========================");
        do{             // 會先執行一次,再判斷
            a++;
            System.out.println(a);
        }while(a<0);
    }
}

for迴圈

package com.zhang.struct;

public class ForDemo01 {
    public static void main(String[] args) {
        /*
        * for迴圈說明:
        * 最先開始執行初始化步驟,可以宣告一種型別,但可以初始化一個或多個迴圈控制變數,也可以是空語句
        * 然後檢測布林表示式,如果為true,執行迴圈體,如果為false,迴圈終止
        * 執行一次迴圈後更新迴圈控制變數(迭代因子控制迴圈變數的增減)
        * 再次檢測布林表示式,迴圈上面過程
        */
        //    初始化      條件判斷  迭代
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
        System.out.println("for迴圈結束");
        /*
        for (; ; ){  死迴圈
        }
        
         初始化多個迴圈控制變數
        for (int a=1,b=1;;){
        }
         */
    }
}

九九乘法表

package com.zhang.struct;

public class ForDemo04 {
    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迴圈

主要用來遍歷陣列和集合

package com.zhang.struct;

public class ForDemo05 {
    public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6,7,8,9};
        //增強for迴圈
        for (int x:num) //將陣列遍歷,把值賦給x
            System.out.print(x+" ");
        System.out.println("\n========================");
        //使用普通for迴圈
        for (int i=0;i<9;i++)
            System.out.print(num[i]+" ");
    }
}

break和continue

break

package com.zhang.struct;

public class BreakDemo01 {
    public static void main(String[] args) {
        int i=0;
        while (i<1000){
            i++;
            System.out.println(i);
            if (i==15)
                break;  // 使用break退出迴圈
        }
    }
}

continue

package com.zhang.struct;

public class ContinueDemo01 {
    public static void main(String[] args) {
        int i=0;
        while (i<30){
            i++;
            if(i%5==0){
                continue; //跳過本次迴圈,直接開始下一次迴圈
            }
            System.out.println(i);
        }
    }
}

列印三角形

package com.zhang.struct;

public class TestDemo01 {
    public static void main(String[] args) {
        //練習題 列印三角形
        for (int j=1;j<=5;j++){ //控制三角形高度
            for (int i=5;i>=j;i--) //列印每一行開始的空格5,4,3,2,1
                System.out.print(" ");
            for (int a=1;a<=j;a++) //列印左半個三角形1,2,3,4,5
                System.out.print("*");
            for (int x=1;x<j;x++)   //列印右半個三角形0,1,2,3,4
                System.out.print("*");
            System.out.println(); //換行
        }

    }
}

反編譯

將Class檔案複製到IDEA工作資料夾中可以檢視原始碼