语法结构0.0

本文详细介绍了Java中的流程控制结构,包括顺序结构、分支结构(if、switch)、循环结构(for、while、do...while)。通过实例展示了如何使用这些结构进行条件判断和循环操作,如判断工作日、处理分数区间、解决数学问题(如鸡兔同笼、水仙花数)等。此外,还讨论了变量的生命周期和循环条件的设定。
摘要由CSDN通过智能技术生成
  • if
  • switch
  • for
  • while
  • do…while
package com.uncle.syntactic_structure;

import java.util.Scanner;

/**
 * java语法结构---流程控制
 * 顺序结构
 * 分支结构
 *      单分支if    多分支switch
 * 循环结构  for  while do...while
 *
 * 变量的生命周期问题(变量 栈内存空间 从声明开始创建出来 用完及回收)
 */
public class SyntacticStructure {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请你输入一个星期对应的数字,以此来判断是否上班");
        int number = input.nextInt();
       
        if (number == 1) {
            System.out.println("您好,您输入的是星期一对应的数字");
        } else if (number == 2) {
            System.out.println("您好,您输入的是星期二对应的数字");
        } else {
            System.out.println("算了  累了");
        }

        
        switch (number) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("这是上班的日子");
                break;
            case 6:
            case 7:
                System.out.println("放假了,宝贝");
                break;
            default:
                System.out.println("没有这个星期啊");
                break;
        }


        //案例
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个学生的成绩,我来帮助你来判断区间");
        int score = input.nextInt();
        switch (score/10) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("不及格");
                break;
            case 6:
                System.out.println("刚好及格");
                break;
            case 7:
                System.out.println("考得还行吧");
                break;
            case 8:
                System.out.println("就比较好啦 也拿不到奖学金");
                break;
            case 9:
                System.out.println("可以拿奖学金啦 请大家吃饭");
                break;
            case 10:
                if(score==100){
                    System.out.println("学霸本ba");
                    break;
                }
            default:
                System.out.println("没你这个人啊");
                break;
        }

        
         /*
        单分支结构if
		if(boolean形式的值)
		    {单条语句}   {多条语句}

		if(){
			代码1
		}else{
			代码2
		}

		if(){

		}else if(){

		}...else if(){

		}else{

		}


    switch(值){//  byte  short  int  char    1.5enum   1.7String
        case 值1:
            代码1;
            [break;] 可有可无
        case 值2:
            代码2;
        default:
            代码
        }

            if(很复杂的条件){

            }else if(){

            }else if(){

            }

        if	好处 (可以写复杂的逻辑)	不好处 执行比较慢
        switch	好处 (判断的过程效率更高)	不好处 只能做==(固定值)


         */



        //案例
        for(int x = 100;x<200;x++){
            if(x%3==1 && x%4==2 && x%5==2){
                System.out.println("操场上的人数为:"+x);
            }
        }


        //案例
        int round=1;
        for( ; round<=5 ; round+=2){
            System.out.println("跑到第"+ round +"圈啦");//2 4 6
        }
        //循环执行完毕 round===6
        System.out.println("循环执行完毕:"+round);




        //生命周期问题

        //变量的生命周期问题(变量 栈内存空间 从声明开始创建出来 用完及回收)

        /*
        循环结构	for    while    do..while

	循环?    重复不停的做同样的事情
		爬楼梯         1-->5楼
		操场跑圈      1-->5圈
		1--5圈
		从哪里开始    1圈  起点
		到哪里结束    5圈  判断  终点的条件
		跑起来变化    增减

	程序中想要执行一个正常的循环  现实生活是类似  需要满足三个条件(必要)
		初始值   终点判定条件  变化量

		允许将三个必要条件都写在()内
		for(1初始值 ; 258终点判定条件 ; 47变化量 ){
			36好多好多执行的代码;
		}

         */



        //案例
        /*
        1.加工零件问题
           甲乙丙丁四个人加工零件
           加工的总零件数为370个
           如果甲加工的零件数多10
           如果乙加工的零件数少20
           如果丙加工的零件数乘以2
           如果丁加工的零件数除以2
           则四个人加工的零件数就相等啦
           求 四个人加工的零件个数分别是多少?
         */
        //设四个人相等时的数是x
        for(int x =45;x<95;x++){
            if((x-10) + (x+20) + (x/2) + (x*2) == 370){
                System.out.println("甲加工的零件数为:"+(x-10));
                System.out.println("乙加工的零件数为:"+(x+20));
                System.out.println("丙加工的零件数为:"+(x/2));
                System.out.println("丁加工的零件数为:"+(x*2));
            }
        }

        //案例
        /*
        2.鸡兔同笼问题
           小鸡  小兔子 关在同一个笼子里    小鸡两只脚  小兔子四只脚
           小鸡+小兔子 总数 50只    脚的总数160只
           求 小鸡 和 小兔子各多少只。
         */
        //解析
        // 设 小鸡x只   小兔子 (50-x)
        //		x*2+(50-x)*4 ==160
        //	         给计算机一个范围  挨个尝试某一个x满足我们的条件
        for(int x=1;x<50;x++){
            if(x*2+(50-x)*4 ==160){
                System.out.println("小鸡的个数为:"+x);
                System.out.println("小兔子个数为:"+(50-x));
            }
        }

        //案例
        /*
        3.通过循环找寻三位数字的水仙花数
           153--->   1      5      3
                          1 + 125 + 27 == 153
           100-999之间挨个尝试  满足上述规则数字    153  370  371  407
         */
        for(int num=100;num<1000;num++){
            int b = num/100;
            int s = num/10%10;//   num%100/10;
            int g = num%10;
            if(b*b*b+s*s*s+g*g*g==num){
                System.out.println(num+"是水仙花数");
            }
        }
        for(int num=100;num<1000;num++){
            if(Math.pow(num/100,3)+Math.pow(num%100/10,3)+Math.pow(num%10,3)==num){
                System.out.println(num+"是水仙花数");
            }
        }



        //转义字符
        //		\ 转义字符  将身后的一个字符意思发生转换
        //		转换特殊的符号  比如 "  '  \
        //		转换几个特殊的字母  比如   \n换行   \r回车  \t制表符
        //
        //



        //画星星案例1

        //*******	画星星 换行		i==1        4-->7    5-->9
        //*** ***  画星星  画空格  画星星  换行	i==2    3   1   3
        //**    **  画星星  画空格  画星星  换行	i==3    2   3   2
        //*       *  画星星  画空格  画星星  换行	i==4    1   5   1
        //可读性 健壮性(严谨) 优化(结构 冗余 性能 内存 复用 扩展)  2*i-3

        Scanner input = new Scanner(System.in);
        System.out.println("请您输入行数:");
        int line = input.nextInt();
        for(int i=1;i<=line;i++){//控制行数
            if(i==1){//第一行规则
                //画星星
                for(int j=1;j<=2*line-1;j++){
                    System.out.print("*");
                }
            }else{//后三行规则
                //画星星
                for(int j=1;j<=(line+1)-i;j++){
                    System.out.print("*");
                }
                //画空格
                for(int j=1;j<=2*i-3;j++){
                    System.out.print(" ");
                }
                //画星星
                for(int j=1;j<=(line+1)-i;j++){
                    System.out.print("*");
                }
            }
            //换行
            System.out.println();
        }




        //画星星案例2
        //数字金字塔                         空格   左边   右边
        //       1		i==1	3    1-1    0
        //     12  1	i==2	2    1-2    1-1
        //   123  21	i==3	1    1-3    2-1
        // 1234  321	i==4	0    1-4    3-1

        for(int i=1;i<=4;i++){//控制行数
            //空格占位
            for(int j=1;j<=4-i;j++){
                System.out.print(" ");
            }
            //左边数字   改变--利用变量  利用循环里层的变量j来控制  j++
            for(int j=1;j<=i;j++){
                System.out.print(j);
            }
            //右边数字   改变--利用j变量   j--
            for(int j=i-1;j>=1;j--){
                System.out.print(j);
            }
            //换行
            System.out.println();
        }



        //案例3
        //打印输出9*9乘法表
        //1*1=1		表达式当做--?
        //1*2=2  2*2=4
        //1*3=3  2*3=6  3*3=9
        //   j  + "*" +   i + "=" +     j*i
        //被乘数  *  乘数  =  乘积
        //在一行之中  被乘数发生变化 j  乘数固定  i

        for(int i=1;i<=9;i++){//控制行数
            //画一个?
            for(int j=1;j<=i;j++){//控制每一行表达式的个数
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
            }
            //换行
            System.out.println();
        }


        //案例4
        //想一个事情  大叔 张三我的学生(A大学)
        //    我 走到A大学学校门口  巧遇张三
        //    我在学校门口等    张三进学校去钱包
        //    去钱包的过程中不许做其他的事情    学校的长椅上休息
        //    张三进入学校   我在门口等  --->出来学校 怎么知道没有座过椅子(椅子刚刷了油漆)
        //    1.在进学校之前  需要在他的身上放一个标识  (干净的裤子)
        //    2.如果坐过椅子  标识改变(变脏啦)
        //    3.出来学校再次看一看标识 (如果跟进学校之前一样 证明没做过 否则做过)

        // 2-100之间的素数  每一个数字做一个输出
        for(int num=2;num<=100;num++){
            //先把1和本身这两个数字  刨除掉
            //在剩下的数字中挨个找寻一遍  看一看还有没有其他的整除数字
            boolean x = false;//标识干净的裤子  //内存空间小
            for(int i=2;i<=num/2;i++){//在其余的数字中挨个找寻 还有没有能整除的
                if(num%i==0){
                    System.out.println(num+"不是素数");
                    x = true;//相当于标识修改啦 变脏啦
                    break;//不是中断if  当满足if条件的时候中断循环
                }
            }
            if(x==false){
                System.out.println(num+"是素数");
            }
        }

        
        /*
        while
        do...while

        循环想要执行 需要三个必要条件  初始值  终点判定条件  变化量
        for( 1初始值 ; 2终点判定条件 ; 4变化量 ){
            3好多好多执行;
        }
        允许将三个条件都写在()内  不是必须

        初始值 ;
        for( ; 终点判定条件 ; ){
            好多好多执行;
            变化量 ;
        }

        初始值;
        while(终点判定条件){// ()内只允许写一个
            好多好多执行;
            变化量;
        }
        我理解就是一个for循环的变体
        变量定义在循环外 生命周期长了
        变化量放在循环内(注意上下的顺序可能对执行产生影响)

        while先判断后执行  条件不满足不执行啦
        do..while先执行后判断  条件不满足 至少执行一次

                初始值;
        do{
            好多好多执行;
            变化量;
        }while(终点判定条件);


         */

		int i = 1;
		while(i<=4){
			//画空格占位
			int j = 1;
			while(j<=4-i){
				System.out.print(" ");
				j++;
			}
			//画星星
			int k = 1;
			while(k<=2*i-1){
				System.out.print("*");
				k++;
			}
			//换行
			System.out.println();
			i++;

    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值