#JAVA# 学习笔记 if 和switch 语句

description:
This section describes the decision-making statements (if-then, if-then-else, switch), the looping statements (for, while, do-while), and the branching statements (break, continue, return) supported by the Java programming language.

1. if-else

跟C几乎一样,都是if - else if -else

  1. 可以只有if,后面两个可以省略。
  2. 注意判断条件只能是布尔类型的true/false。
  3. 只有if 的时候,等于是多个loop,每个loop单独判断。
  4. if - else if -else 时,从上往下判断,仅做第一个符合的条件,后续不再判断并跳出loop。

python的if判断没规定很死,int类型的1或0,还有其他也能当判断条件。JAVA规定很死,只能是布尔类型的true或false。

//sudo code 
if (true) then {
    perform actions ;
}
if (false) then {
    ignore this action ; 
}
//input
class BlockDemo {
    public static void main(String[] args) {
        boolean condition = true;
        if (condition) { // begin block 1
            System.out.println("Condition is true.");
        } // end block one
        else { // begin block 2
            System.out.println("Condition is false.");
        } // end block 2
    }
}

//output 
Condition is true.

//input 

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

        int testscore = 76;
        char grade;

        if (testscore >= 90)
            grade = 'A';
        else if (testscore >= 80)
            grade = 'B';
        else if (testscore >= 70)
            grade = 'C';
        else if (testscore >= 60)
            grade = 'D';
        else
            grade = 'F';
        
        System.out.println("Grade = " + grade);
    }
}

//output 
Grade = C

#ipython 3.6, use number as the condition  

In [11]: yes = 20

In [12]: if yes:print("the condition is true")
the condition is true

In [13]: type(yes)
Out[13]: int

In [14]: yes = 0

In [18]: if yes:
    ...:     print("the condition is true")
    ...: else:
    ...:     print("the condition is false")
    ...:
the condition is false

2. The switch Statement

  1. 简单例子,switch意思就是跳到指定位置,需要有默认设置。
  2. 遇到break就跳出这个switch 圈。
//sudo code 

switch(case id/string){
case id 1 : actions 1;
case id 2: actions 2;
....
case id n: actions n;

break;  // jump out of switch condition {} 

}

  1. 只选一个case,需要在每个case后有break;指令
//input 
public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                break;
            case 2:  monthString = "February";
                break;
            case 3:  monthString = "March";
                break;
            case 4:  monthString = "April";
                break;
            case 5:  monthString = "May";
                break;
            case 6:  monthString = "June";
                break;
            case 7:  monthString = "July";
                break;
            case 8:  monthString = "August";
                break;
            case 9:  monthString = "September";
                break;
            case 10: monthString = "October";
                break;
            case 11: monthString = "November";
                break;
            case 12: monthString = "December";
                break;
            default: monthString = "Invalid month";
                break;
        }
        System.out.println(monthString);
    }
}

//output 
August
  1. 仅跳到某行,且选择后续所有动作,break只需加在最后。(当然也可以看情况加)
//input 
public class SwitchDemoMultiple {

    public static void main(String[] args) {

        java.util.ArrayList<String> furtherMonth =
                new java.util.ArrayList<String>();

        int month = 2;

        switch (month) {
            case 1:
            furtherMonth.add("Jan");
            case 2:
            furtherMonth.add("feb");
            case 3:
            furtherMonth.add("march");
            case 4:
            furtherMonth.add("april");
            case 5:
            furtherMonth.add("may");
                break;
            default: break;
        }

        if (furtherMonth.isEmpty()) {
            System.out.println("no month further");
        } else {
                System.out.println(furtherMonth);
        }


    }

}

//output 
[feb, march, april, may]

  1. 可以多个case使用一样的actions;例如以下是判断某年某月有多少天。
class DaysInMonth {
    public static void main(String[] args) {

        int month = 2;
        int year = 1900;
        int DaysInMonth = 0;

        switch (month){
            case 1: case 3: case 5:
            case 7: case 8: case 10: case 12:
                DaysInMonth = 31;
                break;
            case 4: case 6: case 9 : case 11:
                DaysInMonth = 30;
                break;
            case 2:
                if((year%4 == 0 && year%100 != 0) || year % 400 == 0){DaysInMonth =29;}
                else{DaysInMonth = 28;}
                break;
             default:
                 System.out.println("invalid");
                 break;
        }
        System.out.println(DaysInMonth);
    }
}

  1. switch的判断条件可以是字符串。

例如这个程序需要分成两块,
a) 第一块是做判断,输入字符串的月份后;输出月份的阿拉伯数字
b) 第二是模块化中间的转换“字符串转换为阿拉伯数字月份”
c) 调用部分很像python中的使用某个库,如果C∈B∈A,调用方式就是A.B.C一层层找到C这样子。

class StringSwitchDemo {

    // trasation module

    public static int getMonthNumber(String month){
        int monthNumber = 0;
        if (month == null){return monthNumber;}
        else {
            switch (month.toLowerCase()){
                case "january":
                    monthNumber = 1;
                    break;
                case "february":
                    monthNumber = 2;
                    break;
            }
            return monthNumber;
        }
    }

    //input and print output

    public static void main(String[] args) {
        String month = "January";

        int returnMonthNumber = StringSwitchDemo.getMonthNumber(month);

        if (returnMonthNumber==0){
            System.out.println("invalid");
        } else {
            System.out.println(returnMonthNumber);
        }
    }
}

//test output 
1

例子依旧来自java8官方文档
2018.6.21

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,332评论 0 10
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,798评论 0 38
  • 做好了准备迎接答案
    安静叶阅读 136评论 0 0
  • “多少次问自己,我为何而生,我为何而存在,为何行云流动,为何风雨不止; 活在这个世界,我期待着什么;我想飞向云端,...
    徐某00阅读 505评论 0 0
  • 这段旅程我也不知道是什么时候开始的,兴许是自我记事开始。我的步伐在自己看来很慢,鲜有加速的时候。 我呢就是一个普通...
    想象边缘阅读 526评论 0 1