Java控制语句

Java控制语句

控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。

1 选择语句

1.1 Java选择语句if

//第一种
if(布尔表达式){
    Java语句;                
}
//第二种
if(布尔表达式){
    Java语句;                
}else{
    
}
//第三种
if(布尔表达式){
    Java语句;                
}else if(布尔表达式){
    Java语句;
}else if(布尔表达式){
    Java语句;
}
//第四种
if(布尔表达式){
    Java语句;                
}else if(布尔表达式){
    Java语句;
}else if(布尔表达式){
    Java语句;
}else{
    
}

示例1:

/**
 * @author wcs
 * @date 2021/7/29 17:30
 */
public class IfTest01 {
    public static void main(String[] args) {
        boolean sex = true;
        if (sex) {
            System.out.println("男");
        }

        //当分支中只有一条java语句话,大括号也可以省略不写
        if (sex)
            System.out.println("男");

    }
}

示例2:

/**
 * @author wcs
 * @date 2021/7/29 21:18
 */
public class IfTest02 {
    public static void main(String[] args) {
        boolean sex = true;
        if(sex){
            System.out.println("男");
        }else{
            System.out.println("女");
        }
    }
}

示例3:

import java.util.Scanner;

/**
 * @author wcs
 * @date 2021/7/29 21:19
 */
public class IfTest03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入考试成绩");
        int x = sc.nextInt();
        if (x < 0 || x > 100) {
            System.out.println("输入不合法");
        } else if (x >= 90) {
            System.out.println("优秀");
        } else if (x >= 80) {
            System.out.println("良好");
        } else if (x >= 70) {
            System.out.println("中等");
        } else if (x >= 60) {
            System.out.println("及格");
        }
    }
}

示例4:

import java.util.Scanner;

/**
 * @author wcs
 * @date 2021/7/29 21:29
 */
public class IfTest04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入性别(1表示男,0表示女):");
        int x = sc.nextInt();
        if (x == 1) {
            System.out.println("男");
        } else if (x == 0) {
            System.out.println("女");
        } else {
            System.out.println("出错了");
        }
    }
}

1.2 Java switch选择语句

switch (x) {
            case x = 表达式1:
                Java语句1;
        		break;
            case x = 表达式2:
                Java语句2;
        		break;
            case x = 表达式3:
                Java语句3;
        		break;
        	. . .
            default:
                Java语句;
        }

运行原理是这样的:拿着c和表达式进行比较,如果相等,则执行Java语句1,如果不相等,继续拿着c和表达式2进行比较,如果相等,则执行语句2,如果不相等,继续……,如果c和所有的表达式都不想等,此时default分支语句执行。

注意事项

  • switch语句后面的小括号“()”当中都可以出现什么,在JDK1.6之前(包括1.6在内)switch只能探测int类型的数据,但是在JDK1.7之后(包括1.7在内),switch语句除了支持int类型之外,还支持String类型。也就是说从Java7开始switch后面小括号中可以出现字符串。

  • switch虽然只能探测int类型,但是也可以将byte,short,char类型放到小括号当中,因为这些类型会自动转换成int类型(小容量向大容量转换称为自动类型转换)。

  • switch语句当中case是可以进行合并的,例如以下代码:

    /**
     * @author wcs
     * @date 2021/7/29 17:31
     */
    public class SwitchTest01 {
        public static void main(String[] args) {
           switch (90){
               case 80: case 90: case 100:
                   System.out.println("优秀");
                   break;
               case 70: case 60:
                   System.out.println("还行");
                   break;
               default:
                   System.out.println("继续努力");
           }
        }
    }
    
  • switch语句当中当某个分支匹配成功,则开始执行此分支当中的Java语句,当遇到当前分支中的“break;”语句,switch语句就结束了,但是如果当前分支中没有“break;”语句,则会发生case穿透现象,也就是说下一个分支也不再进行匹配,直接进入下一个分支执行,直到遇到“break;”为止。例如以下代码:

    /**
     * @author wcs
     * @date 2021/7/30 9:16
     */
    public class SwitchTest02 {
        public static void main(String[] args) {
            char c = 'A';
            switch (c) {
                case 'A':
                    System.out.println(1);
                case 'B':
                    System.out.println(2);
                    break;
                default:
                    System.out.println(3);
            }
        }
    }
    

    运行结果:

    image-20210730092421723
1.2.1 判断今天是周几?
import java.util.Calendar;

/**
 * @author wcs
 * @date 2021/7/30 10:42
 */
public class SwitchTest03 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        int wk = c.get(Calendar.DAY_OF_WEEK);
        switch (wk) {
            case 0:
                System.out.println("周六");
                break;
            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;
        }
    }
}

2 循环语句

Java循环语句共包括三个,分别是:for循环、while循环、do…while循环。

2.1 for循环

for循环的语法格式

for(初始表达式;布尔表达式;更新表达式){
    循环体;
}
/*
初始化表达式最先执行,并且在整个循环当中初始化表达式只执行一次,布尔表达式结果是true或者false,true表示循环可以继续执行,false表示循环结束,循环体当中的代码就是需要反复执行的代码,更新表达式一般是用来更新某个变量的值,更新操作之后可能布尔表达式的结果就不再是true了。
*/

对于for循环来说,初始表达式、布尔表达式、更新表达式都不是必须的,当布尔表达式确实的时候,没有条件控制的前提下,会形成死循环。

for(;;){
    //死循环
}

在for循环当中初始化变量的作用域只在for循环中有效,当循环结束之后,初始化变量的内存就释放了,所以在for循环之外是无法访问该变量的。

 for (int i = 1; i <10 ; i++) {
            System.out.println(i);
        }
		//error:i变量不存在
        System.out.println(i);
    }

修改代码:

/**
 * @author wcs
 * @date 2021/7/30 10:56
 */
public class ForTest01 {
    public static void main(String[] args) {
        //把变量的声明位置放到了for循环外
        int i = 1;
        for (; i < 10; i++) {
            System.out.println(i);
        }
        //此时可以访问
        System.out.println(i);
    }
}

示例:用for循环实现1~100所有数字的求和

/**
 * @author wcs
 * @date 2021/7/30 11:14
 */
public class ForTest02 {
    public static void main(String[] args) {
        //声明变量sum,总和
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            //每次循环累加(sum=sum+i)
            sum += i;
        }
        System.out.println(sum);
    }
}

示例:

/**
 * @author wcs
 * @date 2021/7/30 11:20
 */
public class ForTest03 {
    public static void main(String[] args) {
        //输出10以内所有的奇数
        for (int i = 1; i <= 10; i++) {
            if (i % 2 != 0) {
                System.out.println(i);
            }
        }
        
        //也可以这样写
        for (int i = 1; i <= 10; i += 2) {
           	    System.out.println(i);
        }
    }
}
2.1.1 嵌套循环
/**
 * @author wcs
 * @date 2021/7/30 11:27
 */
public class ForTest04 {
    public static void main(String[] args) {
        for (int i = 1; i < 2; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("我是嵌套循环");
            }
        }
    }
}

运行结果:

image-20210730113000735

示例:九九乘法表

/**
 * @author wcs
 * @date 2021/7/30 11:27
 */
public class ForTest04 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "x" + i + "=" + i * j + " ");
            }
            System.out.println();
        }
    }
}

运行结果:

image-20210730113557293
2.1.2 for in
/**
 * @author wcs
 * @date 2021/7/30 15:59
 */
public class ForInTest01 {
    public static void main(String[] args) {
        //for in 循环集合、数组
        int[] nums = {10, 20, 30};
        for (int num : nums) {
            System.out.println(num);
        }

        for (String s : new String[]{"java", "php", "css"}) {
            System.out.println(s);
        }

        for (char c : "javascript".toCharArray()) {
            System.out.println(c);
        }
    }
}

示例:

import java.util.Random;

/**
 * @author wcs
 * @date 2021/7/30 16:08
 */
public class ForInTest02 {
    public static void main(String[] args) {
        //用","分割,再读取出来
        String str = "张三,李四,王二,麻子";
        for (String s : str.split(",")) {
            System.out.println(s);
        }
        System.out.println("--------------");

        //放进集合中随机抽取
        String[] sss = str.split(",");
        Random rand = new Random();
        System.out.println(sss[rand.nextInt(sss.length)]);
    }
}

2.2 while循环

2.2.1 while循环语法结构
while(布尔表达式){
    循环体;
}

先判断布尔表达式的结果,如果是true,则执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果是true,再执行循环体。直到布尔表达式的结果为false,while循环结束。如果第一次判断布尔表达式结果就是false,那循环体执行次数为0。

循环体执行次数可以为0次,也可以是N次,也就是死循环。

while(true){
    //死循环
}
2.2.2 用while输出1~10
/**
 * @author wcs
 * @date 2021/7/30 16:25
 */
public class WhileTest01 {
    public static void main(String[] args) {
        int i = 0;
        while (i < 10) {
            i++;
            System.out.println(i);
        }
    }
}
2.2.3 猜数字游戏
import java.util.Random;
import java.util.Scanner;

/**
 * @author wcs
 * @date 2021/7/30 16:41
 */
public class WhileTest02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        int num = rand.nextInt(10);
        while (true) {
            System.out.println("请输入数字(1~10):");
            int x = sc.nextInt();
            if (x > num) {
                System.out.println("猜大了");
            } else if (x < num) {
                System.out.println("猜小了");
            } else if (x == num) {
                System.out.println("猜对了");
                break;
            }

        }

    }
}
2.2.4 猜数字(进阶)
import java.util.Random;
import java.util.Scanner;

/**
 * @author wcs
 * @date 2021/7/30 16:52
 */
public class WhileTest03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        System.out.println("1、初级    2、中级    3、高级    0、退出游戏");
        System.out.println("请选择难易程度:");
        int x = sc.nextInt();
        switch (x) {
            case 1:
                System.out.println("您选择的是初级");
                System.out.println("请输入数字(1~10),共有3次机会:");
                int count1 = 3;
                int num1 = rand.nextInt(10);
                while (true) {
                    --count1;
                    int n = sc.nextInt();
                    if (n > num1) {
                        System.out.println("猜大了," + "还有" + count1 + "次机会!");
                    } else if (n < num1) {
                        System.out.println("猜小了," + "还有" + count1 + "次机会!");
                    } else if (n == num1) {
                        System.out.println("猜对了");
                        break;
                    }
                    if (count1 == 0) {
                        System.out.println("GAME OVER");
                        break;
                    }
                }
                break;
            case 2:
                System.out.println("您选择的是中级");
                System.out.println("请输入数字(1~100),共有7次机会:");
                int count2 = 7;
                int num2 = rand.nextInt(100);
                while (true) {
                    --count2;
                    int n = sc.nextInt();
                    if (n > num2) {
                        System.out.println("猜大了," + "还有" + count2 + "次机会!");
                    } else if (n < num2) {
                        System.out.println("猜小了," + "还有" + count2 + "次机会!");
                    } else if (n == num2) {
                        System.out.println("猜对了");
                        break;
                    }
                    if (count2 == 0) {
                        System.out.println("GAME OVER");
                        break;
                    }
                }
                break;
            case 3:
                System.out.println("您选择的是高级");
                System.out.println("请输入数字(1~500),共有10次机会:");
                int count3 = 10;
                int num3 = rand.nextInt(500);
                while (true) {
                    --count3;
                    int n = sc.nextInt();
                    if (n > num3) {
                        System.out.println("猜大了," + "还有" + count3 + "次机会!");
                    } else if (n < num3) {
                        System.out.println("猜小了," + "还有" + count3 + "次机会!");
                    } else if (n == num3) {
                        System.out.println("猜对了");
                        break;
                    }
                    if (count3 == 0) {
                        System.out.println("GAME OVER");
                        break;
                    }
                }
                break;
            case 0:
                System.out.println("游戏已退出");
                break;
            default:
                System.out.println("输入不合法");
        }
    }
}

2.3 do…while循环

do…while循环语法结构:

do{
    //循环体    
}while(布尔表达式);  //

执行顺序:先执行循环体,再判断布尔表达式,如果为true,再执行循环体…直到布尔表达式为false,循环结束。

图解:

image-20210730191600373

示例:do…while输出1~5

/**
 * @author wcs
 * @date 2021/7/30 19:18
 */
public class DoWhileTest01 {
    public static void main(String[] args) {
        int i=0;
        do{
            i++;
            System.out.println(i);
        }while (i<5);
    }
}

3 转向语句

3.1 break语句

break;语句,一个单词成一条Java语句,continue也是一样
break语句只能用在两个地方:
第一个位置:switch语句当中,防止case穿透现象,用来终止switch。
第二个位置:用在循环语句当中,用来终止循环执行。
for while do…while

/**
 * @author wcs
 * @date 2021/7/30 19:49
 */
public class BreakTest01 {
    public static void main(String[] args) {
        /*
        如果循环体中没有if语句,输出0-9;
        加了if判断,则会在i=5的时候终止循环
         */
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                //break;语句会让离他最近的循环终止结束掉。
                break;//不会终止if,因为if是选择语句。
            }
            System.out.println(i);
        }
    }
}

运行结果:

image-20210730195314142

break;语句只会终止离他最近的循环:

 for (int j = 0; j < 2; j++) {//外循环不受影响
            for (int i = 0; i < 10; i++) {//内循环  终止
                if (i == 5) {
                    break;
                }
                System.out.println(i+" ");
            }
        }

运行结果:

image-20210730195846979

break;语句也可以指定终止循环:

a: for (int j = 0; j < 2; j++) {
         b: for (int i = 0; i < 10; i++) {
                if (i == 5) {
                    break a; //指定外层循环终止
                }
                System.out.print(i+" ");
            }
        }

3.2 continue语句

continue;语句:终止当前”本次“循环,直接进入下一次循环继续执行。

/**
 * @author wcs
 * @date 2021/7/30 20:13
 */
public class ContinueTest01 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                continue;//跳过本次循环,进入下一次循环。
            }
            System.out.print(i + " ");
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值