Java SE 控制语句

Java SE 控制语句

流程控制语句:

  • 顺序结构: 默认顺序从上到下,从左到右

  • 选择结构: 根据条件决定是否执行一段语

    • if…
    • switch
  • 循环结构: 控制一段代码执行多次 (执行的次数可以有条件控制)

    • for
    • while
    • do…while

1、选择语句

1.1 if 语句

  • 单选|单分支:
 if(选择判断){
         执行的语句体;
      }  

  满足()条件就执行语句体,不满足就不执行

  选择判断 : 是一个结果为boolean类型的表达式 true满足|false不满足

  • 双选|双分支:
     if(选择判断){
         满足条件执行的语句体1;
      }else{
         不满足条件执行的语句体2;
      }

​    根据条件的结果,决定执行那种语句体
​   如果结果为true,执行语句体1,结果为false执行语句体2

  • 多选|多分支:
  if(条件1){
         满足条件执行的语句体1;
      } else if(条件2){
         不满足条件执行的语句体2;
      } else if(条件3){
         不满足条件执行的语句体3;
      }
         ....
       else{
         以上条件都不满足就执行语句体n;  --接盘侠,可以存在可以不存在
      }

注意:

  多选择的多个判断 从上到下一次进行,只要执行了一个对应的语句体,后面的语句体不会再次执行;。

  一个if结构只能执行一个语句体。

   如果语句体中的语句只有一条,前后的{}可以省略。

int i = 2;
        if(i == 0) System.out.println("=0");
		else if(i > 0) System.out.println(">0");
		else System.out.println("<0");
		String name ="admin";
		if(name == "admin"){
		    System.out.println("管理员");
        }else{
		    System.out.println("普通用户");
        }

1.2、switch 语句

switch 定制判断
		switch(表达式){
			case1:
				语句体1break;
			case2:
				语句体2break;
			case3:
				语句体3break;
			....
			default:
				语句体n;
				break;
		}
  • 执行流程:
  1. 计算表达式,得到一个结果。
  2. 从上到下与每一个case后的值进行判断是否相等,相等执行对应的语句体,不相等继续向下判断。
  3. break;代表结束当前switch语句结构,没有break会发生case穿透。
  4. 如果所有的case都不满足,就执行default后面的语句体n,相当于else,可以不写

表达式: 一般为变量名,可以为表达式,可以为常量(没意义)
    类型: byte,short,int,char,枚举(jdk1.5),字符串(jdk1.7)

  • case 穿透:

    • 当执行完毕语句体之后如果没有break,发生case穿透,下面的case无论是否满足,都不会再判断,直接执行对应的语句体,知道遇到下一个break或者switch语句的结束而结束。
  • default: 位置可以任意改变

  • switch 与 if的区别:

    • if: 区间判断,定值判断
    • switch: 定值判断
    • 能用switch都能用if,但是能用if不一定能用switch
public static void main(String [] args){
        //根据年龄判定 ,决定年薪的值
        int age = 23;
        int sal;
        switch(age){
            case 18:
                sal = 180000;
                System.out.println("年薪的值为:"+sal);
                break;
            case 19:
                sal = 190000;
                System.out.println("年薪的值为:"+sal);
                break;
            case 20:
                sal = 200000;
                System.out.println("年薪的值为:"+sal);
                break;
            default:
                System.out.println("年龄不符合要求!!!");
        }

        //递归
        System.out.println(f(6));

    }
    public static int f(int n){
        if(n == 1)
            return 1;
        else
            return n+f(n - 1);
    }

3、循环语句

循环: 让一些代码重复执行多次

思考: 是否存在一些代码想要重复执行多次,如果是可以使用java中的循环

  • for 次数循环 : 明确循环次数
  • while 条件循环 : 不明确循环次数,但是是否结束循环根据一个条件决定
  • do…while

3.1 for 循环

for(条件初始化;条件判断;条件变化){
   重复执行的循环体语句;
}
  • 条件初始化: 声明一个变量 i,并且第一次赋值,这个变量i就是条件

  • 条件判断: 针对变量i的值的判断,结果为boolean类型,结果决定下一次循环是否能够执行,true就是执行,false整个结束当前循环结构

  • 条件变化(迭代因子): 变量i自身值的改变,最终要让条件i不满足条件判断,用来结束循环

  • 执行流程:

    • 1.条件初始化
    • 2.条件判断,满足条件,执行循环体语句,不满足条件直接结束循环
    • 3.条件变化
    • 重复执行2,3步骤

  注意: for循环的条件i是属于当前这个循环的,可以在循环的(),{}中使用循环体中语句只有一句,前后的{}可以省略。

//        使用for循环方式计算2+4+6+…+100的值
        int sum=0;
        for(int i=0;i<101;i+=2){
            sum+=i;

        }
        System.out.println("sum="+sum);
//        for循环输出1-1000之间能被5整除的数,并且每行输出3个
        int count=0;
        for(int i=1;i<=1000;i++){
            if(i%5 ==0){
                count++;
                System.out.print(i+"\t");
                if (count%3==0) System.out.println();
            }
        }

3.2 while 循环

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

注意:

  • 在while循环中条件初始化不属于当前 while循环,注意变量作用域的问题
  • for循环的条件i属于当前循环
  • 循环体语句只有一句,前后的{}可以省略
 		/*
		while(true){
			System.out.println("死循环,哈哈哈!!!!");
		}
		*/		
				while(i<=10){
            i++;
            System.out.println(i);
        }
        System.out.println(i); //作用域属于当前main方法

        /*
		while(false){
			System.out.println("不满足while循环");
		}
		*/

3.3 do…while 循环

do{
		循环体;
	}while(条件判断);

  当{}中的语句体只有一句,前后的{}可以省略

区别 :

  • while循环先判断后执行
  • do…while 先执行后判断
  • do…while的语句体无论是否满足条件判断,都至少会执行一次
		do{
			System.out.println(i);
			i++;
		}while(i<=100);
		//变量i的作用域是当前main方法,不属于do..while循环
		System.out.println("不满足条件的i="+i); //101
		
		/*
		while(false){
			System.out.println("不满足while循环");
		}
		*/
		do
			System.out.println("不满足while循环");
		while(false);

3.4 嵌套循环

  • 循环中嵌套循环
  • 实现功能,每一个for循环中存在一个变量条件i
  • 外层循环变化一次,内层循环变化一轮
	//外层循环 i 行
		for(int i=1;i<=5;i++){
			//内层循环控制列,执行完毕,代表这一行中的所有列执行完毕
			for(int j=1;j<=5;j++){
				System.out.print(i+"---->"+j+" ");
			}
			//换行
			System.out.println();
		}
		
		for(int i=1;i<=5;i++){
			//内层循环控制列,执行完毕,代表这一行中的所有列执行完毕
			for(int j=1;j<=5;j++){
				System.out.print("* ");
			}
			//换行
			System.out.println();
		}

4、break与continue

4.1 break

  作用 : 结束 终止

  应用场景: switch 循环

  默认针对离break关键字最近的内层循环

4.2 continue

  作用 : 结束本次循环,直接进入到下一次循环

  应用场景 : 循环中使用

  默认针对离continue关键字最近的内层循环

//查询1~10之间的数据,查到2个能被3整数的数结束
		//重复做判断,查找->循环
		//确定变量变化的范围 1~10 -> for
		int count = 0; //计数器
		for(int i=1;i<=10;i++){
			if(i%3==0){
				System.out.println(i);
				count++;
				if(count==2){
					break;
				}
			}
		}
		//死循环一般配合break关键字使用,让死循环有停下来的时机
		int j = 1;
		while(true){
			System.out.println(j);
			if(j==5){
				break;
			}
			j++;
		}
		System.out.println("死循环后面的代码");
		
		
		//打印1~10之间的数据,遇到5跳过
		for(int i=1;i<=10;i++){
			if(i==5){
				continue; //跳过本次,直接进入下一步,下面多少行语句体都不执行了
			}
			System.out.println(i);
		}

4.3 标签break与continue

  • 1)需要某一层循环开始的位置设置标签 ->标签名:
  • 2)在使用break或者continue,执行针对跳出|结束哪一个标签代表的循环–>break 标签名; | continue 标签名;
public static void main(String[] args){
		one://外套标签
		for(int i=1;i<=5;i++){
			two://内套标签
      for(int j=100;j<=110;j++){
				System.out.print(i+"--->"+j+" ");
				if(j==105){
					break one;
				}
			}
			System.out.println();
		}
	}

5、练习

import java.util.Scanner;

public class Test01 {
    public static void main(String[] args) {
//        1.键盘接收一个数字,判断这个数是否为质数(质数是只能被1跟自身整除的数,1不是质数)
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个数:");
        int num=sc.nextInt();
        int count =0;
        for(int i=2;i<num;i++){
            if (num%i==0){
                count++;
            }
        }
        if(count==0){
            System.out.println(num+"是质数");
        }else{
            System.out.println(num+"不是质数");
        }
        System.out.println("输入一个数:");
        int a=sc.nextInt();
        for(int i=2;i<a;i++){
            if (a%i==0){
                System.out.println(a+"不是质数");
                break;
            }else if(i==a-1){
                System.out.println(a+"是质数");
            }
        }
    }

}
import java.util.Scanner;

public class Test02 {
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        String name;
        String password;
        int count;
        count=2;
        for(;;){
            System.out.println("用户名:");
            name=sc.next();
            System.out.println("密码:");
            password=sc.next();
            if(name.equals("admin") && password.equals("123456")){
                System.out.println("登录成功");
                break;
            }else if(count ==0){
                System.out.println("对不起,您3次均输入错误这个信息");
                break;
            }else{
                System.out.println("密码错误!还有"+count+"次机会");
                count--;

            }

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值