流程控制语句

 【1】单分支: 

public class T {
    public static void main(String[] args) {
        //功能:随机录入三个数(1-6),求和,根据和的大小选择奖品。
        //三个数
        int num1 = 3;
        int num2 = 1;
        int num3 = 1;

        //求和:
        int sum = 0;
        sum += num1;
        sum += num2;
        sum += num3;

        System.out.println("三个数的和是:" + sum);

        //根据和的大小选择奖品
        if (sum >= 12)
            System.out.println("恭喜你,获得了一等奖!");
        System.out.println("你很幸运啊。。。");

        if (sum >= 9 && sum < 12) {
            System.out.println("恭喜你,获得了二等奖!");
        }

        if (sum >= 6 && sum < 9) {
            System.out.println("恭喜你,获得了三等奖!");
        }

        if (sum < 6) {
            System.out.println("谢谢惠顾!");
        }              
                
                /*
                1.上面的代码中,我写了4个if的分支,每个都是一个单分支,四个单分支组成了四个选择。
                   上面的四个分支,是从上至下顺序执行的,是不可逆的过程。
                2.单分支原理:
                if(){}
                ()中是一个条件表达式,这个表达式返回的结果是要么是true要么是false
                假如返回的是true,就执行后面{}中的代码。假如返回的是false,就不执行后面{}的代码。
                
                3.if后面的{}可以省略不写,但是假如省略了,那么if只负责后面一句话,
                  所以我们一般在自己写代码的时候,建议:写着{} 
                  
                4.单分支缺点:
                我们这道题的代码,是想多个分支里面走一个,所以假如走了一个分支,后面的分支就不想走了,
                按照单分支的特点来说,是要每个都顺序执行的,效率相对较低
                
                5.优化:不用单分支,用多分支:
                */

    }

}

【2】多分支:

public class T {
    public static void main(String[] args) {
        //功能:随机录入三个数(1-6),求和,根据和的大小选择奖品。
        //三个数
        int num1 = 3;
        int num2 = 1;
        int num3 = 1;

        //求和:
        int sum = 0;
        sum += num1;
        sum += num2;
        sum += num3;

        System.out.println("三个数的和是:" + sum);

        //根据和的大小选择奖品
        if (sum >= 12) {
            System.out.println("1等奖");
        } else if (sum >= 9) {//else-->sum<12
            System.out.println("2等奖");
        } else if (sum >= 6) {//else--->sum<9
            System.out.println("3等奖");
        } else {//sum<6
            System.out.println("末等奖");
        }
                
                /*
                1.if(){}elseif(){}elseif(){}else  这是一条语句,一个多分支有多个选择。
                   并且这些分支里面只走一个,假如走了某个分支,后面的分支就不会再判断不会走了,效率比单分支高。
                2.if    else if   ---》else 隐藏条件:跟上面相反的可能性
                3.建议:建议你写的多分支中有最后的那个else
                  最后的else做一个“兜底”的功能。
                */


    }

}

【3】双分支:

public class T {
    public static void main(String[] args) {
        //功能:随机录入三个数(1-6),求和,根据和的大小选择奖品。
        //三个数
        int num1 = 3;
        int num2 = 1;
        int num3 = 1;

        //求和:
        int sum = 0;
        sum += num1;
        sum += num2;
        sum += num3;

        System.out.println("三个数的和是:" + sum);

        //根据和的大小选择奖品
        if (sum >= 12) {
            System.out.println("中奖了");
        } else {//sum<12
            System.out.println("没中奖");
        }
        System.out.println(sum >= 12 ? "中奖了" : "没中奖");
    }
}

【4】随机数:

 

public class T {
    public static void main(String[] args) {

        double num1 = Math.random();
        double num2 = Math.random();
        double num3 = Math.random();
        System.out.println("num1=" + num1);
        System.out.println("num2=" + num2);
        System.out.println("num3=" + num3);

        int num4 = (int) (Math.random() * 6);
        int num5 = (int) (Math.random() * 6);
        int num6 = (int) (Math.random() * 6);
        System.out.println("num4=" + num4);
        System.out.println("num5=" + num5);
        System.out.println("num6=" + num6);

        int num7 = (int) (Math.random() * 6) + 1;
        int num8 = (int) (Math.random() * 6) + 1;
        int num9 = (int) (Math.random() * 6) + 1;
        System.out.println("num7=" + num7);
        System.out.println("num8=" + num8);
        System.out.println("num9=" + num9);


    }
}

 【5】总结:

 if

public class T {
    public static void main(String[] args) {

        //录入会员积分,按照积分打折:
        //录入会员积分:
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入你的积分:");

        //判断:录入的是否是一个int类型的数:
        if (sc.hasNextInt()) {//hasNextInt()判断录入的是否是一个int类型的数,是返回true,不是返回的是false
            int credits = sc.nextInt();
            //判断:
            if (credits >= 5000) {
                System.out.println("6折");
            } else if (credits >= 3000) {
                System.out.println("7折");
            } else if (credits >= 1000) {
                System.out.println("8折");
            } else {
                System.out.println("9折");
            }

        } else {
            System.out.println("录入错误,必须要录入一个整数!");
        }

    }
}
public class T {
    public static void main(String[] args) {

        //键盘录入学生的成绩,按照成绩划分等级:
        //键盘录入成绩:
        int score = 44;
        //按照成绩划分等级
        switch (score / 10) {
            case 1:
                System.out.println("A级");
                break;
            case 2:
                System.out.println("B级");
                break;
            case 3:
                System.out.println("C级");
                break;
            case 4:
                System.out.println("D级");
                break;
            case 5:
                System.out.println("E级");
                break;
            default:
                System.out.println("error");
                break;
        }
                /*
                1.分支switch后面是一个(),()中返回的是一个等值
                 这个值可以是:byte,int,char,short,JDK1.5之后可以使用枚举,JDK1.7之后,可以使用String
                2.将这个等值依次跟{}中的case后面的数值进行比较:假如满足(匹配),就执行:后面的代码。
                   为了防止“穿透”,每个分支后面要加上一个关键字叫:break
                3.也有一个“兜底”功能的分支:default,如果default在最后一行,就不需要加break了,但是要是
                在中间某一行,那么为了防止“穿透”,必须后面加上break
                4.假如相连的某些分支中代码执行一样,那么可以删除只留最后一个即可。
                5.if和switch哪个好?
                switch能解决的问题,if都可以解决。但是if能解决的问题switch不一定能解决。
                if后面的()中可以加等值判断,也可以加区间判断,只要返回true和false即可
                但是switch只能利用等值判断。只能用固定的类型。
                switch:我们的等值判断基本用的switch偏多。
                */

    }
}
public class T {
    public static void main(String[] args) {
        //做一个简单的计算器功能:
        //1.录入第一个数
        Scanner sc = new Scanner(System.in);
        System.out.print("请录入第一个操作数:");
        int num1 = sc.nextInt();

        //2.录入第二个数
        System.out.print("请录入第二个操作数:");
        int num2 = sc.nextInt();


        //3.录入运算符
        System.out.print("请录入运算符---:+,-,*,/");
        String ope = sc.next();//键盘录入字符串

        //4.根据运算符进行计算:
        switch (ope) {
            case "+":
                System.out.print("结果为:" + (num1 + num2));
                break;
            case "-":
                System.out.print("结果为:" + (num1 - num2));
                break;
            case "*":
                System.out.print("结果为:" + (num1 * num2));
                break;
            case "/":
                if (num2 != 0) {
                    System.out.print("结果为:" + (num1 / num2));
                } else {
                    System.out.print("除数不能为0!");
                }
                break;
        }

    }
}
public class T {
    public static void main(String[] args) {
        //功能:求和:1+2+3+4+5
        int i = 1;//【1】条件初始化
        int sum = 0;//sum--》接收和的
        while (i <= 5) {//【2】条件判断
            sum = sum + i;//【3】循环体
            i++;//【4】迭代
        }
        System.out.println("和是:" + sum);//15
                /*
                1.什么情况下想到用循环解决问题的:
                   在代码多次有规律重复的情况下
                2.while后面是一个(),这个()中返回的是一个布尔值:true,false
                  在第一次循环的时候,判断()的内容,如果是true就执行{}中内容,
                  在第二次循环以后,每一次循环还是要走这个判断的。

                PS:()中要是直接写一个true,就是死循环了。

                3.循环执行过程:
                最开始:i=1   sum=0
                第1次循环:i<=5---》满足,执行:sum=1  , i=2
                第2次循环:i<=5---》满足,执行:sum=3   ,i=3
                第3次循环:i<=5---》满足,执行:sum=6  ,i=4
                第4次循环:i<=5---》满足,执行:sum=10 ,i=5
                第5次循环:i<=5---》满足,执行:sum=15 ,i=6
                第6次循环:i<=5---》不满足,循环停止。

                结论:循环只是减少了程序员的工作,而不是减少了计算机底层的工作。

                4.循环的组成:
                【1】条件初始化  【2】条件判断  【3】循环体   【4】迭代
                总结:初始化什么,就判断什么。判断什么就执行什么。执行什么就迭代什么。
                上面四步骤的执行过程:
                【1】【2】【3】【4】【2】【3】【4】【2】【3】【4】
                */
    }
}
public class T {
    public static void main(String[] args) {
        //1+2+3+4+5
        int i = 16;//条件初始化
        int sum = 0;
        do {
            sum = sum + i;//循环体
            i++;//迭代
        } while (i <= 5);//条件判断---->后面必须加上;,否则编译报错

        System.out.println(i);//17
        System.out.println(sum);//16
                
                /*
                int i=16;
                int sum=0;
                while(i<=5){
                        sum=sum+i;
                        i++;
                }	
                System.out.println(i);//16
                System.out.println("和是:"+sum);	//0
                */
                
                
                
                /*
                1.while和do-while的区别:
                        while :先判断,再执行。很可能一次都不执行。
                        do-while:先执行,再判断,无论如何都会被执行一次。
                
                2.在什么情况下只能用do-while呢?
                      考试  批卷   是否及格 
                          
                          while(是否及格 ){
                                  考试  批卷 
                          }
                          ----不合适
                          
                          
                          do{
                                  考试  批卷
                          }while(是否及格)
                      ----合适
                
                */
    }
}
public class T {
    public static void main(String[] args) {
        //1+2+3+4+5:
        int sum = 0;
        int i;
        for (i = 16; i <= 5; i++) {
            sum += i;
        }
        System.out.println(i);
        System.out.println(sum);
                /*
                1.for格式:
                for([1]条件初始化;[2]条件判断;[3]迭代){
                        [4]循环体;
                }
                
                2.执行顺序:
                [1][2][4][3][2][4][3][2][4][3]
                
                3.利用for循环代码简单,所以以后相对比较常用。特别是:循环数量固定的情况。
                
                4.for循环  格式特别灵活  :但是你自己写代码 别太灵活了 怕你理解不了 
                
                5.for死循环:   
                for(;;){
                        //....
                }
                
                6.while,do-while,for谁的效率最高?一样的
                  谁的效率最高:高斯算法最高 。102*50=5050
                
                */
    }
}
public class T {
    public static void main(String[] args) {
        //输出1-100中被3整除的数,每行输出5个:
        int count = 0;//计数器:其实就是定义一个变量,自增操作
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0) {//被3整除的数
                System.out.print(i + "\t");
                count++;
                if (count % 5 == 0) {
                    System.out.println();
                }
            }
        }
    }
}
public class T {
    public static void main(String[] args) {
        //1-100求和,当和第一次大于405的时候,停止程序。
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
            if (sum > 405) {
                break;//结束(最近的)循环。
            }
            System.out.println(sum);
        }
    }
}
public class T {
    public static void main(String[] args) {
                //break:结束最近的循环
                /*
                for(int i=1;i<=100;i++){
                        if(i==33){
                                break;
                        }
                        System.out.println(i);
                }
                */

        for (int i = 1; i <= 100; i++) {
            while (i == 33) {
                break;
            }
            System.out.println(i);
        }
    }
}

 【1】continue:

public class T {
    public static void main(String[] args) {
        //输出1-100中被5整除的数:
        //方式1:
        /*for(int i=1;i<=100;i++){
                if(i%5==0){
                        System.out.println(i);
                }
        }*/
        //方式2:
        for (int i = 1; i <= 100; i++) {
            if (i % 5 != 0) {
                continue;//跳出当前循环,进行下一次循环。
            }
            System.out.println(i);
        }
    }
}

【2】continue深入:

public class T {
    public static void main(String[] args) {
        //continue:跳出当前循环,进行下一次循环:
        /*
        for(int i=1;i<=100;i++){
                if(i==33){
                        continue;
                }
                System.out.println(i);
        }
        */

        for (int i = 1; i <= 100; i++) {
            while (i == 33) {
                continue;
            }
            System.out.println(i);
        }

    }
}

【3】return:

public class T {
    public static void main(String[] args) {

        for (int i = 1; i <= 100; i++) {
            if (i == 33) {
                return;//结束当前的方法
            }
            System.out.println(i);
        }

        System.out.println("aaaaaq");
    }
}
/*
   实现一个功能: 【1】请录入10个整数,当输入的数是666的时候,退出程序。
               【2】判断其中录入正数的个数并输出。
               【3】判断系统的退出状态:是正常退出还是被迫退出。
*/
public class T {
    public static void main(String[] args) {

        //请录入10个整数
        Scanner sc = new Scanner(System.in);
        //计数器:
        int count = 0;
        boolean flag = true;//把它理解成一个“开关”,暂定true就是开关开着的。
        for (int i = 1; i <= 10; i++) {
            System.out.print("请录入第" + i + "个数:");
            int num = sc.nextInt();
            //判断其中录入正数的个数
            if (num > 0) {
                count++;
            }
            //当输入的数是666的时候,退出程序。
            if (num == 666) {
                flag = false;
                break;
            }
        }

        System.out.println("正数的个数是:" + count);

        if (flag) {
            System.out.println("正常退出");
        } else {
            System.out.println("被迫退出");
        }

    }
}

【4】总结:
break:结束最近的循环
continue:跳出当前循环,进入下一次循环
return:结束当前方法

/*
乘法口诀:
1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
*/
public class T {
    public static void main(String[] args) {

        //1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
                /*
                System.out.print("1*6=6"+"\t");
                System.out.print("2*6=12"+"\t");
                System.out.print("3*6=18"+"\t");
                System.out.print("4*6=24"+"\t");
                System.out.print("5*6=30"+"\t");
                System.out.print("6*6=36"+"\t");
                */
                /*
                for(int i=1;i<=6;i++){
                        System.out.print(i+"*6="+i*6+"\t");
                }
                //换行:
                System.out.println();


                //1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
                for(int i=1;i<=7;i++){
                        System.out.print(i+"*7="+i*7+"\t");
                }
                //换行:
                System.out.println();


                //1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
                for(int i=1;i<=8;i++){
                        System.out.print(i+"*8="+i*8+"\t");
                }
                //换行:
                System.out.println();
                */

        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            //换行:
            System.out.println();
        }
    }
}
/*
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*4=4   2*4=8   3*4=12  4*4=16
1*3=3   2*3=6   3*3=9
1*2=2   2*2=4
1*1=1
*/
public class T {
    public static void main(String[] args) {
        for (int j = 9; j >= 1; j--) {
            for (int i = 1; i <= j; i++) {
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            //换行:
            System.out.println();
        }
    }
}

【1】矩形:

public class T {
    public static void main(String[] args) {
         /*
                打印各种形状:
                **********
                **********
                **********
                **********
                */

        for (int j = 1; j <= 4; j++) {//j:控制行数
            //**********
            for (int i = 1; i <= 10; i++) {//i:控制每行的*的个数
                System.out.print("*");
            }
            //换行:
            System.out.println();//换行
        }
    }
}

【2】平行四边形:

public class T {
    public static void main(String[] args) {
        /*
        打印各种形状:
             **********
            **********
           **********
          **********
        */
        for (int j = 1; j <= 4; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (6 - j); i++) {
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= 10; i++) {//i:控制每行的*的个数
                System.out.print("*");
            }
            //换行:
            System.out.println();//换行
        }
    }
}

【3】三角形:

public class T {
    public static void main(String[] args) {
        /*
          打印各种形状:
             *
            ***
           *****
          *******
        */

        for (int j = 1; j <= 4; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (6 - j); i++) {//i:每行的空格数
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= (2 * j - 1); i++) {//i:控制每行的*的个数
                System.out.print("*");
            }
            //换行:
            System.out.println();//换行
        }

    }
}


【4】菱形:

public class T {
    public static void main(String[] args) {
         /*
                打印各种形状:
                     *
                    ***
                   *****
                  *******
                   *****
                    ***
                     *
          */
        //上面的三角形
        for (int j = 1; j <= 4; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (6 - j); i++) {//i:每行的空格数
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= (2 * j - 1); i++) {//i:控制每行的*的个数
                System.out.print("*");
            }
            //换行:
            System.out.println();//换行
        }
        //下面的三角形
        for (int j = 1; j <= 3; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (j + 2); i++) {//i:每行的空格数
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= (7 - 2 * j); i++) {//i:控制每行的*的个数
                System.out.print("*");
            }
            //换行:
            System.out.println();//换行
        }

    }
}

【5】空心菱形:

public class T {
    public static void main(String[] args) {
          /*
                打印各种形状:
                     *
                    * *
                   *   *
                  *     *
                   *   *
                    * *
                     *
         */
        //上面的三角形
        for (int j = 1; j <= 4; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (6 - j); i++) {//i:每行的空格数
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= (2 * j - 1); i++) {//i:控制每行的*的个数
                if (i == 1 || i == (2 * j - 1)) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //换行:
            System.out.println();//换行
        }
        //下面的三角形
        for (int j = 1; j <= 3; j++) {//j:控制行数
            //加入空格:
            for (int i = 1; i <= (j + 2); i++) {//i:每行的空格数
                System.out.print(" ");
            }


            //**********
            for (int i = 1; i <= (7 - 2 * j); i++) {//i:控制每行的*的个数
                if (i == 1 || i == (7 - 2 * j)) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //换行:
            System.out.println();//换行
        }

    }
}
public class T {
    public static void main(String[] args) {
        //正方形的宽
        int size = 19;//必须是奇数
        //中轴线所在的列:
        int centerNum = size / 2 + 1;
        int startNum = centerNum;
        int endNum = centerNum;

        //定义一个开关:
        boolean flag = true;
        for (int j = 1; j <= size; j++) {
            for (int i = 1; i <= size; i++) {
                //if(i>=startNum&&i<=endNum){
                if (i == startNum || i == endNum) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }

            if (endNum == size) {
                flag = false;
            }

            //边界要变化:
            if (flag) {
                startNum--;
                endNum++;
            } else {
                startNum++;
                endNum--;
            }
            System.out.println();
        }

    }
}

 百钱买百鸡

/*
    百钱买百鸡:
    公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
    用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
    三元一次方程组:
    公鸡:x只
    母鸡:y只
    小鸡:z只
    x+y+z=100
    5x+3y+z/3=100
*/
public class T {
    public static void main(String[] args) {

        //第一种方式
        for (int x = 1; x <= 19; x++) {
            for (int y = 1; y <= 31; y++) {
                for (int z = 1; z <= 100; z++) {
                    if ((x + y + z == 100) && (5 * x + 3 * y + z / 3 == 100) && (z % 3 == 0)) {
                        System.out.println(x + "\t" + y + "\t" + z);
                    }
                }
            }
        }
          //第二种方式
//        for (int x = 1; x <= 19; x++) {
//            for (int y = 1; y <= 31; y++) {
//                int z = 100 - x - y;
//                if ((x + y + z == 100) && (5 * x + 3 * y + z / 3 == 100) && (z % 3 == 0)) {
//                    System.out.println(x + "\t" + y + "\t" + z);
//                }
//            }
//        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值