首页 > 代码库 > java流程控制语句之switch和循环语句

java流程控制语句之switch和循环语句

1.switch

switch(表达式){
     case 值1:
          语句体1;
          break;
     case 值2:
          语句体2;
          break;
     ……
     default:
          语句体n;
          break;
}

格式解释:

    switch表示这是switch语句

        a)表达式的取值:byte,short,int,char

        b)JDK5之后可以是枚举

        c)JDK7之后可以是String

    case后面跟的是要和表达式进行比较的值

    语句体部分可以是一条或多天语句

    break表示中断、结束的意思,可以结束switch语句

    default语句表示所有情况都不匹配的时候,就执行该出的内容,和if语句的else相似


执行流程

    首先计算出表达式的值

    其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

    最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。


技术分享


注意事项:

    case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。

    default可以省略,一般不建议。

    break可以省略,一般不建议。

    default可以出现在switch语句的任意位置。

    switch语句的结束条件:1.遇到break ,2.执行到程序的末尾。

import java.util.Scanner;

/**
 * 键盘录入一个数据,根据这个数据,我们输出对应的星期几
 *      键盘录入1,对应输出星期一
 *      键盘录入2,对应输出星期二
 *      ...
 *      键盘录入7,对应输出星期日
 */
public class SwitchDemo {
    public static void main(String[] args){
        Scanner input  = new Scanner(System.in);
        System.out.print("请输入数字:");
        int day = input.nextInt();
        String str = "";
        switch(day){
            case 1:
                str = "星期一";
                break;
            case 2:
                str = "星期二";
                break;
            case 3:
                str = "星期三";
                break;
            case 4:
                str = "星期四";
                break;
            case 5:
                str = "星期五";
                break;
            case 6:
                str = "星期六";
                break;
            case 7:
                str = "星期日";
                break;
            default:
                str = "输入数据不合法";
                break ;
        }
        System.out.println(str);

    }
}


在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用哪种语句呢?

if语句使用场景:

    针对结果是boolean类型的判断

    针对一个范围的判断

    针对几个常量值的判断

switch语句使用场景:

    针对几个常量值的判断


2.循环结构

    循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。


循环语句的组成:

    初始化语句:一条或者多条语句,这些语句完成一些初始化操作。

    判断条件语句:这是一个boolean表达式,这个表达式能决定是否执行循环体。

    循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。

    控制条件语句:这个部分在依次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。


3.循环结构(for循环语句)

for循环语句格式: 

for(初始化语句;判断条件语句;控制条件语句){
    循环体语句;
}

执行流程:

    1.执行初始化语句

    2.执行判断条件语句,看其结果是true还是false,如果是false,循环结束;如果是true,循环执行。

    3.执行循环体语句

    4.执行控制条件语句

    5.回到2继续


技术分享

    

/**
 * for循环
 */
public class ForDemo {
    public static void main(String[] args){
        for(int i = 0;i<4;i++){
            System.out.println("Hello World");
        }

    }
}

注意事项:

    1.判断条件语句的结果是一个boolean类型。

    2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不可以省略。建议永远不要省略。

/**
 * 在控制台输入1-10
 */
public class ForDemo {
    public static void main(String[] args){
        for(int i = 1;i<=10;i++){
            System.out.println(i);
        }

    }
}
/**
 * 求1-10的和
 */
public class ForDemo {
    public static void main(String[] args){
        int sum = 0;
        for(int i = 1;i<=10;i++){
            sum += i;
        }
        System.out.println(sum);

    }
}
/**
 * 求1-100的奇数和偶数之和
 */
public class ForDemo {
    public static void main(String[] args){
        int odd = 0;
        int even = 0;
        for(int i =0;i<=100;i++){
            if(i %2 == 0){
                even += i;
            }else {
                odd += i;
            }
        }
        System.out.println("奇数和是"+odd+",偶数和是"+even);
    }
}
/**
 * 求5的阶乘
 *  什么是阶乘?
 *      n! = n*(n-1)!
 *      n! = n *(n-1)*(n-2)*...*3*2*1
 */
public class ForDemo {
    public static void main(String[] args){
        int num = 1;

        for (int i =1;i<=5;i++){
            num *= i;
        }
        System.out.println(num);
    }
}
/**
 * 水仙花数
 *      所谓的水仙花数就是一个三位数,其各位数字的立方和等于该数本身。
 *      举例:153就是一个水仙花数
 *      153 = 1*1*1 + 5*5*5 +3*3*3
 */
public class ForDemo {
    public static void main(String[] args){
        for(int i = 100;i<=999;i++){
            int baiwei = i / 100;
            int shiwei = i / 10 % 10;
            int gewei = i % 10;
            int result = baiwei * baiwei * baiwei + shiwei * shiwei * shiwei + gewei * gewei * gewei;
            if(i == result){
                System.out.println(i+"是水仙花数");
            }
        }
    }
}


4.循环结构(while循环语句)

while循环语句格式:

初始化语句;
while(判断条件语句){
    循环体语句;
    控制条件语句;
}

技术分享



for循环和while循环的区别?

    使用区别:控制条件语句所控制的那个变量,在for循环结束后,接不能再被访问到了,而while循环结束后,还可以继续使用,如果你想继续使用,就用while,否则推荐使用for循环,原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

    场景区别:for循环适合针对一个范围判断进行操作,当然这个范围是数字;而while循环适合判断不明确操作。例如:你去跑十圈,就用for循环;你跑到死为止,就用while循环了。

/**
 *  我国最高山峰是珠穆朗玛峰:8848米,现在我有一张足够大的纸张,厚度是0.01米。
 *  请问:我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
 *  分析:
 *      1.定义一个统计变量,默认值位0
 *      2.最高山峰是珠穆朗玛峰:8848米,这是最终的厚度
 *        我现在有一张足够大的纸张,厚度为:0.01米,这是最初的厚度。
 *      3.我折叠多少次,就可以保障厚度不低于珠穆朗玛峰的高度
 *        折叠依次有什么变化?就是厚度是以前的2倍。
 *      4.只要每次变化的厚度没有查过珠穆朗玛峰的高度,就折叠
 *      5.输出统计变量
 */
public class WhileDemo {
    public static void main(String[] args){
        int count = 0;
        double end = 8848;
        double start = 0.01;
        while(start < end){
            count ++;
            start *= 2;
        }
        System.out.println(count);
    }
}


5.循环结构(do...while结构)

do...while循环结构格式:

初始化条件;
do{
    循环体语句;
    控制条件语句;
}while(判断条件语句);

技术分享

循环结构的区别及注意事项

    三种循环语句其实都可以完成一行的功能,也就是说可以等价转换,但还是有小区别的。do...while循环至少会执行一次循环体。for循环和while循环只有在条件成立的时候才会去执行循环体。

    写程序优先考虑for循环,再考虑while循环,最后考虑do...while循环。

/**
 * 输出4行5列的星星
 */
public class ForForDemo {
    public static void main(String[] args){
        for(int i = 0;i<4;i++){
            for(int y = 0;y<5;y++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}


6.跳转控制语句

    java中的goto是保留字,目前不能使用。虽然没有goto可以增强程序的安全性,但是也带来了很多不便,比如说,我想在某个循环在某一步的时候就结束,现在就做不了这件事。为了弥补这个缺陷,java就提供了break,continue和return来实现控制语句的跳转和终端。

    



本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1853470

java流程控制语句之switch和循环语句