Java 學(xué)習(xí)筆記(四)流程控制

鍵盤輸入與輸出

輸入

在 Java 中可以使用 java.util.Scanner 類實(shí)現(xiàn)從鍵盤獲取數(shù)據(jù)

Scanner 類是 Java預(yù)先定義好的,放在 java.util 包中盆佣,我們直接使用即可太抓,使用方法:

  1. 在類定義前面先使用 import 導(dǎo)入該類
  2. 創(chuàng)建 Scanner 對(duì)象显押,例如:
    • Scanner input = new Scanner(System.in);
  3. 調(diào)用 Scanner 對(duì)象的方法從鍵盤上讀取數(shù)據(jù)
    • input.next()獲取鍵盤輸入的字符串
    • input.nextInt()獲取鍵盤輸入的整數(shù)
    • input.nextDouble()獲取鍵盤輸入的小數(shù)
    • input.nextBoolean()獲取鍵盤輸入的布爾值
    • 不能從鍵盤獲取 char 類型的字符
/**
    使用 java.util.Scanner 從鍵盤讀取數(shù)據(jù)
*/

// 第一步導(dǎo)入 Scanner 類
import java.util.Scanner;

class Example01{
    public static void main(Sring[] args){
        // 第二步創(chuàng)建 Scanner 的對(duì)象
        // 使用 new 創(chuàng)建類的對(duì)象
        // Scanner input 表示 input 這個(gè)變量是 Scanner 類型的
        // System.in 表示系統(tǒng)的標(biāo)準(zhǔn)輸入柳洋,System.out 表示系統(tǒng)的標(biāo)準(zhǔn)輸出
        Scanner input = new Scanner(System.in);
        // 一般情況下,會(huì)給用戶一個(gè)請(qǐng)輸入的提示
        System.out.println("請(qǐng)輸入一個(gè)整數(shù)");
        // 第三步獲取用戶輸入
        // 獲取用戶輸入的整數(shù)孙援,并保存到 num 變量中
        int num = input.nextInt();
    }
}

輸出

  1. 打印并換行
    • System.out.println()
  2. 打印不換行
    • System.out.print()
    class Example02{
        public static void main(String[] args){
            String name = "answer";
            int age = 18;
            boolean isMan = True;

            // 打印字面量
            System.out.println("Hello World");
            System.out.println(123);
            // 打印變量的值
            System.out.println(name);
            System.out.println(age);
            System.out.println(isMan);
            // 打印表達(dá)式的值
            System.out.println(1 + 1);
            System.out.println(age + 1);
            // 字符串拼接
            System.out.println("name" + name);
            System.out.println("性別男:" + isMan);
            System.out.println("年齡" + age)
            // 輸出結(jié)果:年齡181
            System.out.println("年齡" + age + 1)
            // 輸出結(jié)果:19年齡
            System.out.println(age + 1 + "年齡")
        }
}

流程控制

計(jì)算機(jī)的程序執(zhí)行順序有三種結(jié)構(gòu):

  1. 順序結(jié)構(gòu):從上向下逐條執(zhí)行語(yǔ)句
  2. 選擇結(jié)構(gòu):根據(jù)條件是否成立害淤,選擇執(zhí)行不同的分支
  3. 循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行某段代碼

選擇結(jié)構(gòu)

選擇結(jié)構(gòu)的語(yǔ)句有 ifswitch 語(yǔ)句

if 語(yǔ)句
image
/**
if 語(yǔ)句
*/

import java.util.Scanner;

class Example01{
    // 判斷輸入的數(shù)字是不是正整數(shù)
    public static void main(String[] args){
        System.out.println("請(qǐng)輸出一個(gè)整數(shù)");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        if(num > 0){
            System.out.println(num + "是正整數(shù)");
        }
    }
}
if ...else 語(yǔ)句
image
/**
    if...else 語(yǔ)句
*/

import java.util.Scanner;

class Example02{
    // 判斷輸入的整數(shù)是奇數(shù)還是偶數(shù)
    public static void main(String[] args){
        System.out.println("請(qǐng)輸入一個(gè)整數(shù)");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        // 如果 num 可以被 2 整除,是偶數(shù)拓售,否則窥摄,是奇數(shù)
        if(num % 2 == 0){
            System.out.println(num + "是偶數(shù)");
        }else{
            System.out.println(num + "是奇數(shù)");
        }
    }
}
多分支 if 語(yǔ)句
image
/**
    多分支 if 語(yǔ)句
*/

import java.util.Scanner;

class Example03{
    // 判斷輸入的是正整數(shù),負(fù)數(shù)础淤,還是 0
    public static void main(String[] args){
        System.out.println("請(qǐng)輸入一個(gè)整數(shù)");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        if(num > 0){
            System.out.println(num + "是正數(shù)");
        }else if(num < 0){
            System.out.println(num + "是負(fù)數(shù)");
        }else{
            System.out.println(num + "是零");
        }
    }
}
switch 語(yǔ)句

switch 也是一種多分支語(yǔ)句崭放,語(yǔ)法:

switch(條件表達(dá)式){
        case 常量1:
            代碼塊1;
            break;
        case 常量2:
            代碼塊2;
            break;
        default:
            代碼塊3;
    }
  1. 條件表達(dá)式可以是int, short, byte, String 或者枚舉類型,double,long 等類型不能做為 switch 的條件表達(dá)式
  2. 常量值不能重復(fù)
  3. 如果所有的常量值都不匹配條件表達(dá)式鸽凶,則執(zhí)行 default代碼塊
  4. break 用于跳出 switch 語(yǔ)句
  5. case 沒有先后順序
/**
switch語(yǔ)句
*/
import java.util.Scanner;

class Example04{
    public static void main(Sting[] args){
        // 根據(jù)輸入的數(shù)字判斷是星期幾
        Scanner.out.println("請(qǐng)輸入一個(gè)1~7范圍內(nèi)的正整數(shù)");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        switch(num){
            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;
            defaulf:
                System.out.println("你輸入的數(shù)字不符合要求");
                break;
        }
        
    }
}

循環(huán)結(jié)構(gòu)

循環(huán)就是重復(fù)的執(zhí)行某一段代碼币砂,主要確定兩點(diǎn):

  1. 重復(fù)執(zhí)行的代碼
  2. 重復(fù)執(zhí)行的條件

循環(huán)語(yǔ)句有 while 循環(huán),do...while 循環(huán)玻侥,for 循環(huán)

while 語(yǔ)句
image
class Example01{
    public static void main(Sting[] args){
        // 打印10行"我是 while"
        int rows = 0;
        while(rows < 10){
            System.out.println("我是 while");
            rows++;
        }
    }
}
/*
    計(jì)算 1+2+3...100 的和
*/

class Example02{
    public static void main(String[] args){
        int sum = 0;
        int x = 1;
        while(x <= 100){
            sum += x;
            x++;
        }
        System.out.println("sum = " + sum);
    }
}
/*
    統(tǒng)計(jì)1~100范圍內(nèi)决摧,有多少可以被7整除的數(shù)
*/

class Example03{
    public static void main(String[] args){
            int num = 1;
            int count = 0;
            while(num <= 100){
                if(num % 7 == 0){
                    count++;
                }
                num++;
            }
            System.out.print("1~100范圍內(nèi)可以被7整除的數(shù)有" + count + "個(gè)");
        }
}
/*
    猜數(shù)
    1 生成一個(gè)1~100范圍內(nèi)的隨機(jī)整數(shù)
    2 提示用戶輸入一個(gè)猜測(cè)的數(shù)字
         如果輸入的數(shù)字比隨機(jī)數(shù)字大,提示大了
         如果輸入的數(shù)字比隨機(jī)數(shù)字小凑兰,提示小了
         如果相等掌桩,提示猜中了
    3 統(tǒng)計(jì)用戶猜測(cè)的次數(shù)
*/

import java.util.Scanner;

class Example04{
    public static void main(String[] args){
        // 1. 生成一個(gè)1~100范圍內(nèi)的隨機(jī)整數(shù)
        // Math.random() 方法返回一個(gè)0~1范圍內(nèi)的隨機(jī)小數(shù)
        int dest = (int)(Math.random * 100);
        Scanner input = new Scanner(System.in);
        // 統(tǒng)計(jì)用戶猜測(cè)的次數(shù)
        int count = 0;
        System.out.println("請(qǐng)輸入你猜測(cè)的數(shù)字");
        int num = input nextInt();
        // 每次輸入,計(jì)數(shù)器就加1
        count++;
        
        while(num != dest){
            if(num > dest){
                System.out.println("大了票摇,請(qǐng)重新輸入");
            }else if(num < dest){
                System.out.println("小了拘鞋,請(qǐng)重新輸入");
            }
            // 重新輸入的數(shù)字賦值給 num
            num = input.nextInt();
            // 每次重新輸入,計(jì)數(shù)器就加1
            count++;
        }
        // 循環(huán)結(jié)束矢门,說明 dest == num 即猜中了
        System.out.println("恭喜你盆色,猜中了灰蛙,共猜了" + count + "次");
    }
}
do...while 語(yǔ)句
image
class Example05{
    public static void main(String[] args){
        // 1. 打印10行字符串
        int count = 0;
        do{
            System.out.println("Hello world");
            count++;
        }while(count < 10);
        
        // 2. 累加 1+2+3...100
        int num = 1;
        int sum = 0;
        do{
            sum += num;
            num++;
        }while(num <= 100);
        System.out.println("sum = " + sum);
    }
}
/*
    與 while 的區(qū)別:
    如果循環(huán)條件不成立
    do...while 至少執(zhí)行一次循環(huán)
    while 一次循環(huán)都不會(huì)執(zhí)行
*/

class Example05{
    public static void main(String[] args){
        int num = 10;
        // 循環(huán)條件不成立, while 一次也不執(zhí)行
        while(num < 0){
            System.out.println(num);
            num++;
        }

        // 循環(huán)條件不成立隔躲,do...while 執(zhí)行一次
        do{
            System.out.println(num);
            num++;
        }while(num < 0);
    }
}
for 語(yǔ)句
image
for(初始化表達(dá)式摩梧;循環(huán)條件表達(dá)式;循環(huán)體后表達(dá)式){
    循環(huán)體
}

執(zhí)行過程:

  1. 執(zhí)行初始化表達(dá)式
  2. 判斷循環(huán)條件
  3. 如果條件成立宣旱,執(zhí)行循環(huán)體仅父,執(zhí)行循環(huán)體后表達(dá)式
  4. 重復(fù)2,3步浑吟,當(dāng)循環(huán)條件不成立時(shí)結(jié)束循環(huán)

一般情況下笙纤,當(dāng)循環(huán)次數(shù)確定時(shí)使用 for 循環(huán),循環(huán)次數(shù)不確定時(shí)使用 while 循環(huán)

public class Example06 {
    public static void main(String[] args){
        // 1.打印10次hello world
        for(int i = 1; i <= 10; i++){
            System.out.println("Hello World" + i);
        }

        // 2.計(jì)算 1+2+3...100 的和
        int sum = 0;
        for(int i = 1; i <= 100; i++){
            sum += i;
        }
        System.out.println("sum=" + sum);

        // 3.輸出1~100之間能被7整除的數(shù)
        for(int i = 1; i <= 100; i++){
            if(i % 7 == 0){
                System.out.print(i + " ");
            }
        }
    }
}
/**
    循環(huán)嵌套
    根據(jù)輸入的行數(shù)和個(gè)數(shù)打印星號(hào)
 */

 import java.util.Scanner;

public class Example07 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("請(qǐng)輸入行數(shù)");
        int rows = input.nextInt();
        System.out.println("請(qǐng)輸入個(gè)數(shù)");
        int num = input.nextInt();

        // 外層循環(huán)控制行數(shù)
        for(int x = 1; x <= rows; x++){
            // 內(nèi)層循環(huán)控制個(gè)數(shù)
            for(int i = 1; i <= num; i++){
                System.out.print("*");
            }
            System.out.println();
        }
        input.close();
    }
}
/**
    打印以下圖形
    *
    **
    ***
    ****
    *****
    ******
 */

import java.util.Scanner;

public class Example08 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("請(qǐng)輸入行數(shù)");
        int num = input.nextInt();

        for(int i = 1; i <= num; i++){
            for(int x = 1; x <= i; x++){
                System.out.print("*");
            }
        System.out.println();
        }
        input.close();
    }
}
結(jié)束循環(huán)
  • continue 結(jié)束本次循環(huán)组力,繼續(xù)下次循環(huán)

  • break 跳出循環(huán)結(jié)構(gòu)

/*
 continue 結(jié)束本次循環(huán)省容,繼續(xù)下一次循環(huán)
*/

public class Example09{
    public static void main(String[] args){
        // 打印1~100范圍內(nèi)可以被7整除的數(shù)
        num = 0;
        while(num <= 100){
            num ++;
            if(num % 7 != 0){
                // 如果不能被7整除就結(jié)束本次循環(huán),再去判斷循環(huán)條件
                continue;
            }
            System.out.print(num + " ")
        }
    }
}
/*
    break 結(jié)束循環(huán)
*/
import java.util.Scanner;

class Example10{
    public static void main(String[] args){
        int dest = (int)(Math.random() * 100);
        Scanner input = new Scanner(System.in);
        int count = 0;
        int num = -1;
        // 循環(huán)條件一致成立
        while(true){
            System.out.println("請(qǐng)輸入你猜測(cè)的數(shù)字");
            num = input.nextInt();
            count++
            if(num > dest){
                System.out.println("大了");
            }else{
                System.out.println("小了");
            }else{
                System.out.println("恭喜你燎字,猜中了腥椒,共猜了" + count + "次");
                // 結(jié)束循環(huán)
                break;
            }
        }
    }
}
/*
    for 循環(huán)中的 break , continue
 */
public class Example11{
    public static void main(String[] args){
        // 1.計(jì)算兩個(gè)整數(shù)的最大公約數(shù)
        int m = 20;
        int n = 30;
        for(int i = m > n ? n : m; i >= 1; i--){
            if(m % i == 0 && n % i == 0){
                System.out.println(m + "與" + n + "的最大公約數(shù)是" + i);
                // 跳出整個(gè)循環(huán)
                break;
            }
        }

        // 2. 打印1~100之間能被7整除的數(shù)
        for(int i = 1; i <= 100; i++){
            if(i % 7 != 0){
                // 結(jié)束本次循環(huán)體,去執(zhí)行表達(dá)式3
                continue;
            }
            System.out.print(i + " ");
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末候衍,一起剝皮案震驚了整個(gè)濱河市笼蛛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛉鹿,老刑警劉巖滨砍,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榨为,居然都是意外死亡惨好,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門随闺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔓腐,你說我怎么就攤上這事矩乐。” “怎么了回论?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵散罕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我傀蓉,道長(zhǎng)欧漱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任葬燎,我火速辦了婚禮误甚,結(jié)果婚禮上缚甩,老公的妹妹穿的比我還像新娘。我一直安慰自己窑邦,他們只是感情好擅威,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冈钦,像睡著了一般郊丛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞧筛,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天厉熟,我揣著相機(jī)與錄音,去河邊找鬼较幌。 笑死庆猫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绅络。 我是一名探鬼主播月培,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼恩急!你這毒婦竟也來了杉畜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衷恭,失蹤者是張志新(化名)和其女友劉穎此叠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體随珠,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灭袁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窗看。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茸歧。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖显沈,靈堂內(nèi)的尸體忽然破棺而出软瞎,到底是詐尸還是另有隱情,我是刑警寧澤拉讯,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布涤浇,位于F島的核電站,受9級(jí)特大地震影響魔慷,放射性物質(zhì)發(fā)生泄漏只锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一院尔、第九天 我趴在偏房一處隱蔽的房頂上張望蜻展。 院中可真熱鬧喉誊,春花似錦、人聲如沸铺呵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)片挂。三九已至幻林,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間音念,已是汗流浹背沪饺。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷愤,地道東北人整葡。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像讥脐,于是被迫代替她去往敵國(guó)和親遭居。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355