• 控制语句


    1 怎么接收用户键盘输入?
        java.util.Scanner s = new java.util.Scanner(System.in);
        // 接收整数
        int i = s.nextInt();
        // 接收字符串
        String str = s.next();
     
    2 控制语句
        2.1 控制语句的出现可以让我们的程序具有逻辑性,条理性,可以使用控制语句来实现一个业务了。
     
        2.2 控制语句包括几类?
            3类:
            选择语句
            循环语句
            转向语句
     
        2.3 选择语句也可以叫做分支语句
            if语句
            switch语句
     
        2.4 循环语句,主要循环反复的去执行某段特定的代码块。
            for循环
            while循环
            do..while..循环
        
            什么是循环语句,为什么要是用这种语句?
                因为在现实世界当中,有很多事情都需要反复/重复的去做。
                对应到程序当中,如果有一块代码需要重复执行,此时为了减少代码量,我们使用循环语句。
                
        2.5 转向语句
            break
            continue
            return(目前先不需要学习,后面讲方法的时候会使用,到时候再说)
     
    3 选择语句/分支语句 if
     
     
    if选择语句:
    ---------------------------------------------------------↓ if选择语句 ↓----------------------------------------------------------
    /*
        if语句的语法结构记忆运行原理?
            if语句是分支语句,也可以叫做条件语句。
            if语句的语法格式:
                第一种写法:
                    if(不是随便写的,必须是布尔表达式){
                        java语句;
                    }
                这里的大括号{}叫做一个分支。
                if 这个单词翻译为如果,所以又叫做条件语句。
                该语法的执行原理是:
                    如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。
    
                第二种写法:
                    if(布尔表达式){
                        java语句;
                    }else{
                        java语句;
                    }
                    执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。
                    如果布尔表达式的结果是false,分支1不执行,执行分支2
                    以上的这个语句可以保证一定会有一个分支执行。
                    else表示其他
                            
                第三种写法:
                    if(布尔表达式1){
                        java语句;
                    }else if(布尔表达式2){
                        java语句;
                    }else if(布尔表达式3){
                        java语句;
                    }else if(布尔表达式4){
                        java语句;
                    }......
                    
                    以上if语句的执行原理?
                        先判断布尔表达式1,如果布尔表示1为true,则执行分支1,然后if语句结束了。
                        当布尔表达式1结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式的结果是true,则执行分支2,整个if就结束了。
                        从上往下以此判断,主要看第一个true发生在哪个分支上。
                        第一个true对应的分支执行,只要一个分支执行,整个if结束。
                        
                第四种写法:
                    if(布尔表达式1){
                        java语句;
                    }else if(布尔表达式2){
                        java语句;
                    }else if(布尔表达式3){
                        java语句;
                    }else if(布尔表达式4){
                        java语句;
                    }else{
                        java语句;
                    }
                    
                    以上条件没有一个成立的,则执行else。
                    
            注意:1 对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。
                            if语句中只要有1分分支执行了,整个if语句就结束了(对于1个完成的if语句来说的)。
                        
                        2 以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。
                            以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。其中第二种和第四种肯定会有1个分支执行,
                            因为他们有else。
                            
                        3 当分支当中java语句只有一条的时候,大括号可以省略不写,但为了可读性,最好不好省略。
                            有的程序员在编写代码的时候可能会故意将大括号省略,你需要可以看懂。
                            
                        4 控制语句和控制语句之间是可以嵌套的。但是嵌套的时候大家最好一个语句一个语句进行分析,不要冗杂在一起分析。
                            小窍门:分析外面if语句的时候,里面的这个if语句可以看做是普通的一堆java代码。
                
    */
    public class IfTest01{
        public static void main(String[] args){
            
            //定义一个布尔类型的变量,表示性别。
            boolean sex = false;
            
            // 业务:当sex为true时表示男,为false的时候表示女。
            /*
            if (sex == true) { //是关系运算符,不是赋值运算符, == 是用来判断是否相等的  不具备赋值作用
                System.out.println('男');    
            }else{
                System.out.println('女');    
            }
            */
            // 改良代码。
            if (sex) {
                System.out.println('男');    
            }else{
                System.out.println('女');    
            }
            
            // 可以在进一步改良
            // 可以使用三目运算符
            sex = true;
            System.out.println(sex?'男':'女');
            
            // 代码可以这样写吗?
            // () 小括号当中最终取的值是sex变量的值
            // 而sex是布尔类型,所以这个可以通过。
            // 这种写法太ne了,不要这么写,这样你会让else分支不在有价值。
            /*sex = false;
            if (sex = true) {
                System.out.println('男');    
            }else{
                // 虽然这种语法可以,但是会导致else分支永远不能执行。
                System.out.println('女');    
            }*/
            
            // 省略了大括号的写法
            // 当分支中有一条java语句的话,大括号可以省略。
            if (sex)
                System.out.println('男');    
            else
                System.out.println('女');    
            
            // 判断一下程序会出现问题吗?会出什么问题?第几行代码会报错?
            // IfTest01.java:121: 错误: 有 'if', 但是没有 'else'
            if (sex)
                System.out.println('男');    
                System.out.println("Hello World");    
            /*else //这一行编译报错,因为else缺少if
                System.out.println('女');*/
            
        }
    }
    /*
        业务要求:
            1 从键盘上接收一个人的年龄。
            2 年两要求为[0-150],其他值表示非法,需要提示非法信息。
            3 根据人的年龄动态的判断这个人属于生命的哪个阶段?
                [0-5] 婴幼儿
                [6-10] 少儿
                [11-18] 少年
                [19-35] 青年
                [36-55] 中年
                [56-150] 老年
            4 请使用if语句完成以上的业务逻辑
    */
    public class IfTest02{
        public static void main(String[] args){
            java.util.Scanner s = new java.util.Scanner(System.in);
            System.out.print("请输入年龄:");
            int age = s.nextInt();
            //System.out.println("测试以下,您输入的年龄是:" + age);
            /*对于初学者来说可能代码会写成这样,这是正常的。
             代码的经验需要一步步的积累,慢慢的代码就会越来越漂亮了
             需要时间,需要积累代码经验。最好的代码是:最少的代码量,最高的效率*/
            /*if(age >= 0 && age <= 5){
                System.out.println("这一个婴幼儿的年龄");
            } else if (age >= 6 && age <= 10) {
                System.out.println("这一个少儿的年龄");
            } else if (age >= 11 && age <= 18) {
                System.out.println("这一个少年的年龄");
            } else if (age >= 19 && age <= 35) {
                System.out.println("这一个青年的年龄");
            } else if (age >= 36 && age <= 55) {
                System.out.println("这一个中年的年龄");
            } else if (age >= 59 && age <= 150) {
                System.out.println("这一个老年的年龄");
            } else {
                System.out.println("这一个非法的年龄");
            }*/
            
            // 嵌套的if else语句
            /*if(age < 0 || age > 150){
                System.out.println("对不起,年龄值不合法");
            } else {
                if (age <= 5){
                    System.out.println("婴幼儿");
                }else if(age <= 10){
                    System.out.println("少儿");
                }else if(age <= 10){
                    System.out.println("少年");
                }else if(age <= 18){
                    System.out.println("青年");
                }else if(age <= 35){
                    System.out.println("中年");
                }else{
                    System.out.println("老年");
                }
            }*/
            
            String str = "老年"; // 字符串变量默认值是"老年"
            
            if(age < 0 || age > 150){
                System.out.println("这一个非法的年龄");
                // 既然不合法,你就别让程序继续往下执行了,怎么终止程序呢?
                return;
            } else if(age <= 5){
                System.out.println("这一个婴儿的年龄");
            } else if (age <= 10) {
                System.out.println("这一个少儿的年龄");
            } else if (age <= 18) {
                System.out.println("这一个少年的年龄");
            } else if (age <= 35) {
                System.out.println("这一个青年的年龄");
            } else if (age <= 55) {
                System.out.println("这一个中年的年龄");
            } else if (age <= 150) {
                System.out.println("这一个老年的年龄");
            }
            System.out.println(str);
        }    
    }
    /*
        题目:
            1 系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。
            
            2 等级:
                优 : [90~100]
                良 : [80~90]
                中 : [70~80]
                及格 : [60~70]
                不及格 : [0~60]
            
            3 要求乘积是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。
    */
    public class IfTest03{
        public static void main(String[] args){
            java.util.Scanner s = new java.util.Scanner(System.in);
            //String Achievement = s.next();
            //double d = Double.parseDouble(Achievement);
            //System.out.print("这个学生的成绩是:" + Achievement);
            
            double Achievement = s.nextDouble();
            
            if(Achievement < 0 || Achievement > 100){
                System.out.println("您输入的成绩为非法成绩");
            }else if(Achievement < 60){
                System.out.println("您输入的成绩为不及格");
            }else if(Achievement < 70){
                System.out.println("您输入的成绩为及格");
            }else if(Achievement < 80){
                System.out.println("您输入的成绩为中");
            }else if(Achievement < 90){
                System.out.println("您输入的成绩为良");
            }else{
                System.out.println("您输入的成绩为优");
            }
        }    
    }
    /*
        题目:
            业务:
                从键盘上接收天气的信息:
                    1表示:雨天
                    0表示:晴天
                同时从键盘上接收性别的信息:
                    1表示:男
                    0表示:女
                业务要求:
                    当天气是雨天的时候:
                        男的:打一把大黑伞
                        女的:打一把小花伞
                    当天其实晴天的时候:
                        男的:直接走起,出去玩耍
                        女的:擦点防晒霜,出去玩耍
                    
                    需要使用if语句以及嵌套的方式展现这个业务。
                    
                    可以再程序的开始,接收两个数据,一个数据是天气,一个数据是性别。
                    然后将这两个数据保存到变量中。
    */
    public class IfTest04{
        public static void main(String[] args){
            java.util.Scanner s = new java.util.Scanner(System.in);
            
            System.out.print("请输入对应的天气:");
            int weather = s.nextInt();
            
            System.out.print("请输入对应的性别:");
            int sex = s.nextInt();
            
            if(weather == 0){
                if(sex == 1){
                    System.out.println("晴天了、男孩直接走起,出去玩耍");
                }else if(sex == 0){
                    System.out.println("晴天了、女孩擦点防晒霜,出去玩耍");
                }else{
                    System.out.println("您输入的性别有误,请输入正确的性别");
                }
            }else if(weather == 1){
                if(sex == 1){
                    System.out.println("下雨啦、男孩打了一把大黑伞");
                }else if(sex == 0){
                    System.out.println("下雨了、女孩打了一把小花伞");
                }else{
                    System.out.println("您输入的性别有误,请输入正确的性别");
                }
            }else{
                System.out.println("您输入的天气有误,请输入正确的天气。");
            }
        }    
    }
    switch选择语句:
    ---------------------------------------------------------↓ switch选择语句 ↓----------------------------------------------------------
     
    /*
        switch语句:
            1 switch语句也是选择语句,也可以叫做分支语句。
            2 switch语句的语法格式
                switch(值){
                    case 值1:
                        Java语句;
                        Java语句;
                        break;
                    case 值2:
                        Java语句;
                        Java语句;
                        break;
                    case 值3:
                        Java语句;
                        Java语句;
                        break;
                    default:
                        Java语句;
                }
                
                以上是一个完整的switch语句
                    其中:break语句不是必须的
                                default分支也不是必须的
                    
                switch语句支持的值有哪些?
                    支持int类型以及String类型
                    但一定要注意JDK的版本,在jdk8之前不支持String类型,只支持int。
                    在jdk8之后,switch语句开始支持字符串String类型。
                    
                    switch语句本质上只支持int和String,但是byte、short、char也可以使用在switch语句当中,
                    因为byte、short、char可以进行自动类型转换。
                    
                    switch语句中“值”与“值1”、“值2”比较的时候,会使用“==”进行比较。
                
            3 switch语句的执行原理
                拿“值”与“值1”进行比较,如果相同,则执行该分支中的Java语句,
                然后遇到“break;”语句,switch语句就结束了。
                如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。
                
                注意:如果分支执行了,但是分支最后没有“break;”,那么会发生case穿透现象。
                
                所有的case都没有匹配成功,那么default分支会执行。
    */
    
    public class SwitchTest01{
        public static void main(String[] args){
            
            // 分析这个程序是否能够编译通过?
            // switch只支持int和String类型。
            // 错误: 不兼容的类型: 从long转换到int可能会有损失
            /*long x = 100L;
            switch(x){
                
            }*/
            
            // 以下这些都是可以的,因为他可以接收String和int类型。
            /*long x = (int)100L;
            switch(x){
                
            }*/
            
            /*byte b = 100;
            switch(b){
                    
            }*/
            
            /*short c = 100;
            switch(c){
                    
            }*/
            
            /*char d = 'a';
                // 相当于 int i = c;
            switch(d){ //实际上这里相当于97
                    
            }
            
            // switch支持String字符串类型(jdk1.8版本以上支持)。
            /*switch("abc"){
            
            }*/
            
            // 写一个完整的switch语句
            // 接收键盘输入,根据输入的数字来判断星期几。
            // 0 星期天
            // 1 星期一
            // ......
            
            java.util.Scanner s = new java.util.Scanner(System.in);
            System.out.print("请输入您要输入的数字:");
            int i = s.nextInt();
            
            /*switch(i){
                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;
                default:
                    System.out.println("您输入的天气数字有误!请重新输入!");
            }*/
            
            // case穿透现象
            /*switch(i){
                case 0:
                    System.out.println("星期天");
                    break;
                case 1:
                    System.out.println("星期一");
                    // break; // 这里注释掉了哦  没有了break; 所以他就回继续向下执行,直到有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;
                default:
                    System.out.println("您输入的天气数字有误!请重新输入!");
            }*/
            
            // 关于default语句,当所有的case都没有匹配上的时候,执行default语句。
            /*switch(i){
                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;
                default:
                    System.out.println("您输入的天气数字有误!请重新输入!");*/
            
            // 关于case合并的问题
            switch(i){
                case 0: case 1: case 2:
                    System.out.println("星期天");
                    break;
                case 3: case 4: case 5:
                    System.out.println("星期三");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                default:
                    System.out.println("您输入的天气数字有误!请重新输入!");
            }
        }
    }
    /*
        题目:
            1 系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。
            
            2 等级:
                优 : [90~100]
                良 : [80~90]
                中 : [70~80]
                及格 : [60~70]
                不及格 : [0~60]
            
            3 要求乘积是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。
            
            必须使用switch语句来完成,你该怎么办?
    */
    public class SwitchTest02{
        public static void main(String[] args){
            //提示用户输入学生程序
            java.util.Scanner s = new java.util.Scanner(System.in);
            System.out.print("请输入学生的成绩:");
            double score = s.nextDouble();
            
            if(score < 0 || score > 100){
                System.out.println("您输入的学生成绩有误,再见!");
                return;
            }
            
            int grade = (int)(score / 10);// 假设说这个学生的成绩是95 那么95 / 10 = 9.5 强转成int是9
            switch(grade){
                case 9: case 10:
                    System.out.println("该学生的成绩是优");
                    break;
                case 8:
                    System.out.println("该学生的成绩是良");
                    break;
                case 7:
                    System.out.println("该学生的成绩是中");
                    break;
                case 6:
                    System.out.println("该学生的成绩是及格");
                    break;
                case 0: case 1: case 2: case 3: case 4: case 5:
                    System.out.println("该学生的成绩是不及格");
                    break;
                default:
                    System.out.println("您输入的学生成绩不合法!再见!");
            }
        }
    }
    for循环语句:
    ---------------------------------------------------------↓ for循环语句 ↓----------------------------------------------------------
    /*
        为什么要使用循环?
        循环语句的出现就是为了解决代码的复用性。
        
    */
    public class ForTset01{
        public static void main(String[] args){
            // 要求在控制台上输出100个100
            // 什么时候可以考虑使用循环呢?相同的代码重复出现的时候,可以使用循环语句。
            int number = 100;
            for(int i = 0; i < 100; i++){
                System.out.println(number);
            }
        }
    }
    /*
        1 for循环的语法机制以及运行原理?
            语法机制:
                for(初始化表达式;条件表达式;更新表达式){
                    循环体; // 循环体由java语句构成
                    java语句;
                    java语句;
                    java语句;
                    java语句;
                    java语句;
                    ....
                }
                
                注意:
                    第一:初始化表达式祖先执行,并且在整个循环中只只执行一次。
                    第二:条件表达式结果必须是一个布尔类型,也就是说true或者false。
                
                执行原理:
                    先执行初始化表达式,并且初始化表达式只执行1次。
                    然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
                    循环体结束之后,执行更新表达式。
                    更新完之后,在判断条件表达式结果,如果还是true,继续执行循环体。
                    直到更新表达式之行结束之后,在判断条件时,条件为false,for循环终止。
                    
                更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新某个变量的值,
                这样条件表达式的结果才有可能从true变成false、从而终止for循环的执行。如果缺失更新表达式,很有可能变成死循环。
    */
    public class ForTest02{
        public static void main(String[] args){
            // 最简练的for循环怎么写?
            // 初始化表达式、条件表达式、更新表达式其实都不是必须的
            
            /* for(;;){
                System.out.println("死循环");
            }*/
            
            // 最常见的for循环
            // 循环10次,输出0-9
            /*
                i = 0
                i = 1
                i = 2
                i = 3
                i = 4
                i = 5
                i = 6
                i = 7
                i = 8
                i = 9
                
                强调一下:对于以下的这个for循环,其中int i = 0;
                最先执行,并且只执行一次,而且i变量属于for循环的局部变量,for循环结束之后i的内存就释放了。
                这个i变量只能在for循环中使用。
                这个i变量属于for循环域。在main方法中没有办法直接使用。
            */
            /*for(int i = 0 ; i < 10 ; i++){
                System.out.println("i = " + i);
            }*/
            
            // i变量的作用域就扩大了。
            int i = 0;
            for( ; i < 10 ; i++){
                System.out.println("i --> " + i);
            }
            
            System.out.println("这里的i可以访问吗? i = " + i);// 10
            
            // 变形
            for(int k = 1 ; k <= 10 ; k++){
                System.out.println("k --> " + k); // 1 2 3 ... 10
            }
            
            // 变形
            for(int k = 1 ; k <= 10 ;){
                System.out.println("k --> " + k); // 1 2 3 ... 10
                 k++;
            }
            
            // 变形
            for(int k = 1 ; k <= 10 ;){
                k++;
                System.out.println("value --> " + k); // 2 3 4 ... 10  11
            }
        }
    }
    public class ForTest03{
        public static void main(String[] args){
            // for的其他形式。
            for(int i = 10; i > 0 ; i--){
                System.out.println("i = " + i);// 10 9 8 7 6 5 4 3 2 1
            }    
            
            // 变形
            for(int i = 0; i < 10 ; i += 2){
                System.out.println("value1 = " + i);
            }
            
            // 死循环
            // 注意: 1对3 求余数, 结果还是1
            /*for(int i = 100; i > 0 ; i %= 3){
                System.out.println("value2 = " + i);
            }*/
            
            
        }
    }
    /*
        使用for循环实现1~100所有奇数求和
        至少给出两种解决方案
    */
    // 我自己写出来的方案
    public class ForTest04{
        public static void main(String[] args){
            int k = 0;
            for(int i = 1; i <= 100; i += 2){
                k = i + k;
            }
            
            System.out.println("1~100的奇数之和是:" + k);
            
            /*
                第一种方案
                思路:先找出1~100所有的奇数,然后在考虑求和的事儿。
                第一步:先从1取到100,一个数字一个数字的取出来。
                第二步:既然可以得到每一个数字,那么我们进一步判断这个数字是否为奇数,
                奇数对2求余数,结果都是1
            */
            int sum = 0;
            for(int i = 1; i <= 100; i++){
                // int sum = 0; //不能在这个循环体中声明,这样会导致“计算器归0”
                // for循环中嵌套了if语句。
                if(i % 2 ==1){ // i为奇数的条件
                    sum += i;
                }
            }
            
            System.out.println("1~100所有的奇数求和结果是:" + sum);
            
        }
    }
    /*
        1 所有合法的控制语句都可以嵌套使用
        2 for循环嵌套一个for循环执行原理是什么?
            提示一下:大家不要因为for循环中嵌套了一个for循环就感觉这个程序比较特殊,实际上,大家可以这样看待:
            for(){
                //在分析外层for循环的时候,把里面的for就当做一段普通的java语句/代码。
                for(){
                
                }
            }
    */
    public class ForTest05{
        public static void main(String[] args){
            
            //单层for循环
            for(int i = 0; i < 10; i++){
                System.out.println("i = " + i);
            }
            
            for(int k = 0; k < 2; k++){//循环两次
                System.out.println("k = " + k);
            }
            
            /*
            输出结果
            k ---> = 0
            i---> = 0
            i---> = 1
            i---> = 2
            i---> = 3
            i---> = 4
            i---> = 5
            i---> = 6
            i---> = 7
            i---> = 8
            i---> = 9
            k ---> = 1
            i---> = 0
            i---> = 1
            i---> = 2
            i---> = 3
            i---> = 4
            i---> = 5
            i---> = 6
            i---> = 7
            i---> = 8
            i---> = 9
            */
            /*for(int k = 0; k < 2; k++){//循环两次
                System.out.println("k ---> = " + k);
                // 外面循环一次,他就循环10次(因为外面的for控制里面的for)    因为外面循环了两次,所以他就循环两个10次
                for(int i = 0; i < 10; i++){//循环10次   
                    System.out.println("i---> = " + i);
                }
            }/*
            
            /*
            // 第一遍
            for(int i = 0; i < 10; i++){//循环10次    所以他就循环两个10次
                    System.out.println("i == > " + i);
            }
            
            // 第二遍
            for(int i = 0; i < 10; i++){//循环10次    所以他就循环两个10次
                    System.out.println("i == > " + i);
            }
            */
            int i = 0;
            
            for(int k = 0; k < 2; k++){
                for(; i < 10; i++){
                    System.out.println("k ---> = " + k);
                    System.out.println("value ---> = " + i);
                }
            }
            
        }
    }
    /*
        利用for循环实现99乘法表
    */
    public class ForTest06{
        public static void main(String[] args){
            
            for(int i = 1 ; i <= 9 ; i++){
                for(int k = 1 ; k <= i ; k ++){
                    System.out.print(k + "*" + i + "=" + i * k + " ");
                }
                System.out.println();
            }
            
        }    
    }
    
    public class ForTest07{
        public static void main(String[] args) {
            //冒泡排序算法
            int[] numbers=new int[]{1,5,8,2,3,9,4};
            int i,j;
            for(i=0;i<numbers.length-1;i++){
                for(j=0;j<numbers.length-1-i;j++){
                    if(numbers[j]>numbers[j+1]){
                        int temp=numbers[j];
                        numbers[j]=numbers[j+1];
                        numbers[j+1]=temp;
                    }
                }
            }
            System.out.println("从小到大排序后的结果是:");
            for(i=0;i<numbers.length;i++)
                System.out.print(numbers[i]+" ");
        }
    }
    while循环语句:
    ---------------------------------------------------------↓ while循环语句 ↓----------------------------------------------------------
     
    /*
        while循环:
            1 while循环的语法机制以及执行原理
                语法机制:
                    while(布尔表达式){
                        循环体;
                    }
                    
                    执行原理:
                        判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,
                        如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。
                
            2 while循环有没有可能循环次数为0次?
                可能。当while的布尔表达式为false,那么他的循环次数就为0次
                while循环的循环次数是:0 ~ n 次
    */
    
    public class WhileTest01{
        public static void main(String[] args){
            //死循环
            /*while(true){
                System.out.println("死循环");
            }*/
            
            // 本质上,while循环和for循环原理是相同的。
            /*
                for(初始化表达式;布尔表达式;更新表达式){
                    循环体;
                }
                
                初始化表达式;
                while(布尔表达式){
                    循环体;
                    更新表达式;
                }
                
                if switch 属于分支语句属于选择语句
                for while do..while..这些都是循环语句。
                可以正常互相嵌套
            */
            
            /*int i = 0;
            while(i < 10){
                System.out.println("while ---> " + i);
                i++;
            }
            
            
            for(int k = 0 ; k < 10 ; k++){
                System.out.println("for --> " + k);
            }*/
            
            int i = 0;
            while(i < 10){
                i++;
                System.out.println("while ---> " + i);// 1 2 3 .. 9 10
            }
            
            for(int k = 0 ; k < 10 ; ){
                k++;
                System.out.println("for --> " + k);// 1 2 3 .. 9 10
            }
            
        }
    }
    do..while循环语句:
    ---------------------------------------------------------↓ do..while循环语句 ↓----------------------------------------------------------
    /*
        do..while循环语句的执行原理以及语法机制:
            语法机制:
                do{
                    循环体
                }while(布尔表达式);
                
                注意:do..while循环最后的时候不要漏掉“分号”
                
                执行原理:
                    先执行循环体中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续自行循环体,如果为false循环结束。
                
                对于do..while循环来说,循环体至少执行一次。循环体的执行次数是1~n次。
                对于while循环来说,循环体的执行次数是:0~n次。
    */
    public class DoWhileTest01{
        public static void main(String[] args){
            
            /*int i = 0;
            do{
                System.out.println(i);
                i++;
            }while(i<10);*/
            
            /*int i = 0;
            do{
                System.out.println(i++);
            }while(i<10);*/
            
            int i = 0;
            do{
                System.out.println(++i);
            }while(i<10);
            
        }
    }
    break转向语句:
    ---------------------------------------------------------↓ break转向语句 ↓----------------------------------------------------------
    /*
        break;语句
            1 break;语句比较特殊,特殊在break语句是一个单词成为一个完整的java语句。
             另外 continue也是这样,他俩都是一个单词成为一条语句。
            2 break 翻译为折断、弄断的意思
            
            3 break;语句可以用在哪里呢?
                用在两个地方,其他位置不行
                第一个位置:switch语句当中,用来终止switch语句的执行。
                    用在switch语句当中,用来终止switch语句的执行。
                    
                第二个位置:break;语句用在循环语句当中,用来终止循环的执行。
                    用在for当中
                    用在while当中
                    用在do..while当中
                    
            4 以下程序主要是以for循环为例学习break转向语句
            
            5 break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离他最近的那个循环语句。
            
            6 怎么让break;语句终止指定循环呢?
                第一步: 你需要给循环起一个名字,例如:
                    a:for(){
                        b:for(){
                        
                        }
                    }
                第二步:终止:break a;    
                
    */
    public class BreakTest01{
        public static void main(String[] args){
            
            /*for(int i = 0 ; i < 10 ; i++){
                
                if(i == 5){
                    // break;语句会让离他最近的循环终止结束掉
                    break;// break;终止的不是if,不是针对if的,而是针对离他最近的循环。
                }
                System.out.println("i == " + i);
            }
            System.out.println("Hello World!");*/
            
            /*for(int k = 0 ; k < 2; k++){
                for(int i = 0 ; i < 10 ; i++){
                
                if(i == 5){
                    // break;语句会让离他最近的循环终止结束掉
                    break;// break;终止的不是if,不是针对if的,而是针对离他最近的循环。
                }
                System.out.println("i == " + i);
                }
            }*/
            
            // 以下讲解的内容,以后开发很少用。不要紧张
            // 这种语法很少用,了解以下即可。
            a:for(int k = 0 ; k < 2; k++){
                b:for(int i = 0 ; i < 10 ; i++){
                
                if(i == 5){
                    break a;// 这个a就代表你让谁结束,谁就结束
                }
                System.out.println("i == " + i);
                }
            }
            
        }
    }
    continue转向语句:
    ---------------------------------------------------------↓ continue转向语句 ↓----------------------------------------------------------
     
    /*
        continue;语句:
            1 continue翻译为:继续
            2 continue语句和break语句要对比着学习。
            3 continue语句的作用是:
                终止当前“本次”循环,直接进入下一次循环继续执行。
                for(){
                    if(){ // 当这个条件成立时,执行continue语句
                        // 结束本次循环,直接跳到下一次循环
                        continue; //当这个continue语句执行时,continue下面的代码不执行,直接进入下一次循环。
                    }
                    
                    // 以上的continue一旦执行,那么下面的代码本次都不会执行,直接执行下一次循环。
                    code1;
                    code2;
                    code3;
                    code4;
                    code5;
                }
                
            4 continue语句后面可以指定循环吗?
                可以的。
                这里就不再讲了,自己测试一下。
    */
    public class ContinueTest01{
        public static void main(String[] args){
            
            System.out.println("--------break-----------");
            
            for(int i = 0 ; i < 10 ; i++){
                
                if(i == 5) {
                    break;    
                }
                System.out.println(i);
            }
            
            System.out.println("--------continue-----------");
            
            for(int i = 0 ; i < 10 ; i++){
                
                if(i == 5) {
                    continue;
                }
                System.out.println(i);
            }
        }    
    }
    猴子与桃子的练习:
    ---------------------------------------------------------↓ 猴子与桃子的练习 ↓----------------------------------------------------------
    /*
        题目,猴子吃桃子
            猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个,
            以后每天早上都吃了前一天剩下的一半零一个,到了第十天早上想在吃时,只剩下一个桃子。求第一天共摘了多少个桃子。
    */
    public class Test01{
        public static void main(String[] args){
            
            int day = 9;
            int TaoZi = 1;
            System.out.println("第10天有1个桃子");
            for(int i = day ; i > 0 ; i--){
                TaoZi = (TaoZi + 1) * 2;
                System.out.println("第" + day-- +"天有"+ TaoZi +"个桃子");
            }
        }
    }
  • 相关阅读:
    收集一些dos网络配置命令,从新获取ip刷新dns
    多个线程访问共享对象和数据的方式
    Oracle rownum 分页, 排序
    ORACLE中用rownum分页并排序的SQL语句
    CentOS 6.5安装MongoDB 2.6(多yum数据源)
    【编程练习】收集的一些c++代码片,算法排序,读文件,写日志,快速求积分等等
    java枚举使用详解
    PHP+MySQL动态网站开发从入门到精通(视频教学版)
    Premiere Pro CS6标准教程
    黑客攻防:实战加密与解密
  • 原文地址:https://www.cnblogs.com/xlwu/p/13052962.html
Copyright © 2020-2023  润新知