Java逻辑控制—顺序结构,分支结构,循环结构

一:顺序结构

1.1.顺序结构比较简单.按照代码书写的顺序一行一行执行
		public class TestDemo {
		    public static void main(String[] args) {
		        System.out.println("aaa");
		        System.out.println("bbb");
		        System.out.println("ccc");
		        //aaa
		        //bbb
		        //ccc
		    }
		}
1.2.如果调整代码的书写顺序, 则执行顺序也发生变化
		public class TestDemo {
		    public static void main(String[] args) {
		        System.out.println("aaa");
		        System.out.println("ccc");
		        System.out.println("bbb");
		        //aaa
		        //ccc
		        //bbb
		    }
		}

二:分支结构

2.1 if语句
2.1.1 if语句的基本语法的三种形式
①if语句的基本语法形式1
if(布尔表达式){
    //条件满足时执行代码
}
②if语句的基本语法形式2
		if(布尔表达式){
		    //条件满足时执行代码
		}else{
		    //条件不满足时执行代码
		}
③if语句的基本语法形式3
		if(布尔表达式){
		    //条件满足时执行代码
		}else if(布尔表达式){
		    //条件满足时执行代码
		}else{
		    //条件都不满足时执行代码
		}
2.1.2 if语句的具体代码演示
		public class TestDemo {
		    public static void main(String[] args) {
		        //判定一个数字是奇数还是偶数
		        int num=10;
		        if(num%2==0) {
		            System.out.println(num + "是偶数");
		        }else{
		            System.out.println(num+"是奇数");
		        }
		    }
		}
		public class TestDemo {
		    public static void main(String[] args) {
		        //判定一个数字是正数还是负数
		        int num = 10;
		        if (num > 0) {
		            System.out.println(num+"是正数");
		        } else if (num < 0) {
		            System.out.println(num+"是负数");
		        } else {
		            System.out.println(num+"是 0");
		        }
		    }
		}
2.1.3 if语句的注意事项
①悬垂else问题
		public class TestDemo {
		    public static void main(String[] args) {
		       int x=10;
		       int y=10;
		       if(x==5){
		           if(y==10){
		               System.out.println("LOL");
		           }
		       else{
		               System.out.println("hahaha");
		           }
		       }
		    }
		}

以上代码什么都不会输出,原因在于此时的else是和最接近的if匹配,但是实际开发中我们不建议这么写。

②代码风格问题

Java 中更推荐使用 : { 放在 if / else 同一行。如上面代码所示

③分号问题
		public class TestDemo {
		    public static void main(String[] args) {
		        int x = 20;
		        if (x == 10); {
		            System.out.println("hehe");
		        }
		    }
		}

此处多写了一个分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。程序输出 hehe

2.2 switch语句
2.2.1 switch语句的基本语法
		switch(整数|枚举|字符|字符串){
		 case 内容1 : {
		 内容满足时执行语句;
		 [break;]
		 }
		 case 内容2 : {
		 内容满足时执行语句;
		 [break;]
		 }
		 ...
		 default:{
		 内容都不满足时执行语句;
		 [break;]
		 } 
		}
2.2.2 代码实例
public class TestDemo {
    public static void main(String[] args) {
        int day=1;
        switch(day){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
    }
}

根据switch中的值得不同,会执行对应的case语句。遇到break就会结束该case语句。
如果switch中的值没有匹配的case,就会执行default中的语句。
建议一个switch语句最好都要带上default。

2.2.3 switch语句的注意事项
① break 不要遗漏, 否则会失去 “多分支选择” 的效果
②注意事项2 switch 中的值只能是 整数|枚举|字符|字符串
③注意事项3 switch 不能表达复杂的条件
④注意事项4 switch 虽然支持嵌套, 但是很丑~
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示

三:循环结构

3.1 while循环
3.1.1 while语句的基本语法格式
while(循环条件){ 
循环语句; 
} 

循环条件为 true, 则执行循环语句; 否则结束循环

3.1.2 代码实例
		//用while循环实现 计算 1! + 2! + 3! + 4! + 5!
        int i=1;
        int sum=0;
        while(i<=5){
            //将fac j重置为1,非常重要
            int fac=1;
            int j=1;
            while(j<=i){
                fac*=j;
                j++;
            }
            sum+=fac;
            i++;
        }
        System.out.println(sum);

完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。

import java.util.Scanner;
import java.util.Random;

Random random=new Random();
        Scanner sc=new Scanner(System.in);
        int guess=random.nextInt(100);//[1,100)
        while(true){
            System.out.println("请输入要输入的数字:[1,100)");
            int num=sc.nextInt();
            if(num<guess){
                System.out.println("低了");
            }else if(num>guess){
                System.out.println("高了");
            }else{
                System.out.println("猜对了");
                break;
            }
        }

求两个正整数的最大公约数

Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();

        while(a%b!=0){
            int c=a%b;
            a=b;
            b=c;
        }
        System.out.println(b);

求出0~99999之间的所有“水仙花数”并输出。

        int i=0;
        int tmp=0;
        for(i=0;i<=99999;i++){
            tmp=i;
            int count=0;
            //首先判断数字有几位
            while(tmp!=0){
                tmp/=10;
                count++;
            }
            tmp=i;
            //求每一位
            int sum=0;
            while(tmp!=0){
                sum+=Math.pow(tmp%10,count);
                tmp/=10;
            }
            if(sum==i){
                System.out.println(i);
            }
        }

编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序

Scanner scanner=new Scanner(System.in);
        int count=3;
        while(count!=0){
            System.out.println("请输入你的密码:");
            String password=scanner.nextLine();
            if(password.equals("123")){
                System.out.println("登录成功");
                break;
            }else {
                count--;
                System.out.println("你还有" + count + "次机会");
            }
        }

求一个整数,在内存当中存储时,二进制1的个数。

int count=0;
        int n=11;
        while(n!=0){
            if((n&1)!=0){
                count++;
            }
            n=n>>>1;//无符号右移
        }
        System.out.println(count);
3.1.3 while循环语句的注意事项

①和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
②和 if 类似, while 后面的 { 建议和 while 写在同一行.
③和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行

3.2 for循环
3.1.1 for循环的基本语法
for(表达式1;表达式2;表达式3){ 
循环体; 
} 

表达式1: 用于初始化循环变量
表达式2: 循环条件
表达式3: 更新循环变量
相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏

3.1.2 代码实例
		//用for循环实现 计算 1! + 2! + 3! + 4! + 5!
        int i=1;
        int sum=0;
        for(i=1;i<=5;i++){
            int j=1;
            int fac=1;
            for(j=1;j<=i;j++){
                fac*=j;
            }
            sum+=fac;
        }
        System.out.println(sum);

输出n*n的乘法口诀表,n由用户输入

int i=0,j=0;
        System.out.println("请输入n的值:");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for(i=1;i<=n;i++){
            for(j=1;j<=i;j++){
                System.out.printf(i+"*"+j+"="+i*j+" ");
            }
            System.out.println(" ");
        }
3.1.3 for循环语句的注意事项

①和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
②和 if 类似, for 后面的 { 建议和 while 写在同一行.
③和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行

3.3 do while循环(次要)
3.1.1 do while语句的基本语法
		do{ 
		循环语句; 
		}while(循环条件);

先执行循环语句, 再判定循环条件

3.1.2 代码实例
		//用do while循环打印1-10
        int i=1;
        do{
            System.out.println(i);
            i++;
        }while(i<=10);
3.1.3 do while循环语句的注意事项

①do while 循环最后的分号不要忘记
②一般 do while 很少用到, 更推荐使用 for 和 while

3.4 break

break 的功能是让循环提前结束

		//找到 100 - 200 中第一个 3 的倍数
        int num = 100;
        while (num <= 200) {
            if (num % 3 == 0) {
                System.out.println("找到了 3 的倍数, 为:" + num);
                break;
            }
            num++;
        }

执行到 break 就会让循环结束

3.5 continue

continue 的功能是跳过这次循环, 立即进入下次循环

		//找到 100 - 200 中所有3的倍数
        int num = 100;
        while (num <= 200) {
            if (num % 3 != 0) {
                num++; // 这里的 ++ 不要忘记! 否则会死循环.
                continue;
            }
            System.out.println("找到了 3 的倍数, 为:" + num);
            num++;
        }

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值