Day04

3 阅读5分钟

流程控制语句

1.if语句

1.1if的三种格式

if(判断条件){
    语句体
}
//=================================

if (判断条件){
    语句体
}else{
    语句体2
}
//=================================    
    
if (判断语句){
    语句体1
}else if(判断语句){
    语句体2
}    

2.switch语句

switch(表达式){
   case1:
       语句体1breakcase2: 
       语句体2break;  
}

case的穿透性

package com.itheima.test;

public class SwitchTest {
    /*
        需求: 定义一个方法, 方法接收一个月份, 程序打印出不同的季节
                3 4 5 : 春季
                6 7 8 : 夏季
                9 10 11 : 秋季
                12 1 2 : 冬季
     */
    public static void main(String[] args) {
        Day(6);
    }

    public static void Day(int month) {
        switch (day) {
            case 1:
            case 2:
            case 3:
                System.out.println("敲代码");
                break;
            case 4:
            case 5:         
                System.out.println("复习");
                // break;
            case 6:
            case 7:           
                System.out.println("出去玩");
                break;            
            default:
                System.out.println("您的输入有误!");
                break;
        }
    }
}

3.for循环语句格式和执行流程

格式:

for(初始化语句 ;条件判断语句 ; 条件控制语句){

​ 循环体语句

}

public static void main(String []args){
    for(int i = 0; i < 5 ; i++){
        System.out.println("跑圈");
    }
}

执行流程:

  1. 执行初始化语句, 在整个循环期间, 只执行一次
  2. 执行判断条件, 看其返回的结果是true, 还是false

​ false : 循环结束

​ true : 进入第三步

  1. 执行循环体语句

  2. 执行条件控制语句

  3. 回到2继续

    3.1案例

    3.1.1

    1求偶数和

    public class ForTest {
        public static void main(String[] args) {
            int evenNumberSum = getEvenNumberSum();
            System.out.println("1~100之间的偶数和为:" + evenNumberSum);
        }
    
    
        public static int getEvenNumberSum() {
            int sum = 0;
            for (int i = 1; i <= 100; i += 2 ) {
                if (i % 2 == 0) {
                    sum += i;
                }
            }
            return sum;
        }
    
        public static int getEvenSum() {
            int sum = 0;
            for (int i = 2; i <= 100; i += 2) {
                // 2 4 6 8 10 12...
                sum += i;
            }
            return sum;
        }
    }
    
    3.1.2水仙花数
    package com.itheima.test;
    
    public class ForTest {
        public static void main(String[] args) {
            printNarcissusNumber();
        }
    
        public static void printNarcissusNumber() {
            // 通过循环获取所有的三位数(因为水仙花数是一个三位数)
            for (int i = 100; i <= 999; i++) {
                // 对每一个三位数进行数值拆分
                int ge = i % 10;
                int shi = i / 10 % 10;
                int bai = i / 100;
                if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
                    System.out.println(i);
                }
            }
        }
    }
    

    3.2for循环语句注意事项

    1.循环 { } 中定义的变量,在每一轮循环结束后,都会从内存中释放

    2.循环 ( ) 中定义的变量,在整个循环结束后,都会从内存中释放

    3.循环语句 ( ) 和 { } 之间不要写分号

    4.循环嵌套

    外循环执行一次,内循环执行一圈

    案例

    public class Test2 {
        public static void main(String[] args) {
            test();
        }
    
        public static void test(){
            for (int i = 0; i < 6; i++) {
                for (int j = 0; j < i; j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    

    5.whlie循环

    package com.itheima.loop;
    
    public class WhileDemo {
        public static void main(String[] args) {
            int i = 1;
            while (i <= 5) {
                System.out.println("HelloWorld");
                i++;
            }
        }
    }
    

    5.1死循环

    whlie(true){
        System.out.println("HelloWorld")
    }
    

    do whlie循环

    int = 0;
    do{
        System.out.println("HelloWorld");
        i++         
    }whlie(i < 3)
    

    特点:先执行后判断

    6.三种循环的区别

    for循环和whlie循环先判断后执行

    do whlie循环先执行后判断

    7.break和continue

    1.break:终止循环内容的执行,结束当前循环

    2.continue:跳过某次循环体内容的执行,继续下一次执行

    8.Random生成随机数

    格式:

    Random r = new Random

    r. nextInt(n);指的是0 ~ n 但不包含n

    案例生成随机数字游戏

    package com.itheima.test;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class RandomTest {
        public static void main(String[] args) {
            guessNumber();
        }
    
        public static void guessNumber() {
            Random r = new Random();
            
            Scanner sc = new Scanner(System.in);
            
            int randomNumber = r.nextInt(100) + 1;
    
            while (true) {
    
                System.out.println("请输入: ");
                
                int inputNumber = sc.nextInt();
                // 5. 比大小, 给出提示
                if (inputNumber > randomNumber) {
                    System.out.println("猜大了!");
                } else if (inputNumber < randomNumber) {
                    System.out.println("猜小了!");
                } else {
                    System.out.println("恭喜, 猜中了!");
                    break;
                }
            }
        }
    }
    

数组

数组指一种容器,可以存储同种类型的多个值

1.数组的定义格式和静态初始化

数据类型 [] 数值名

int [] arr

静态初始化:

初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。

格式:

​ 数据类型[] 数值名 = {元素1,元素2,元素3.....};

int [] arr = {11, 22, 33, 44, 55};

1.1数值遍历操作

数组遍历:依次访问数组中的每一个元素

public static void main (String [] args){
    for(int i = 0; i < arr.lenght; i++){
        
    }
}

1.2案例求偶数和

package com.itheima.test;

public class ArrayTest1 {
    public static void main(String[] args) {
        int[] arr1 = {-11, -22, -33, -44, -55};
        int[] arr2 = {66, 77, 88, 99, 100};

        int sum = getSum(arr2);
        System.out.println("偶数和为:" + sum);
    }

    public static int getSum(int[] arr) {
        int sum = 0;

        for (int i = 0; i < arr.length; i++) {
            // arr[i] : 每一个元素
            // i : 代表索引
            if (arr[i] % 2 == 0) {
                sum += arr[i];
            }
        }

        return sum;
    }
}

1.3案例求最大值

package com.itheima.test;

public class ArrayTest1 {
    public static void main(String[] args) {
        int[] arr1 = {5, 44, 33, 55, 22};

        int max = getMax(arr1);
        System.out.println("最大值为:" + max);
    }

    public static int getMax(int[] arr) {
        // 1. 假设数组中第一个元素为最大值
        int max = arr[0];
        // 2. 遍历数组, 取出剩余的每一个元素
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                // 4. 找到更大的元素, 改变max变量的值
                max = arr[i];
            }
        }
        return max;
    }

}

1.4案例数值反转操作 ***

需求:

已知一个数组 arr = {11, 22, 33, 44, 55}; 用程序实现把数组中的元素值交换,

交换后的数组 arr = {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。

package com.itheima.test;

public class ArrayTest1 {
    public static void main(String[] args) {
        int[] arr1 = {11, 22, 33, 44, 55};

        reverseArray(arr1);

        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }
    }

    public static void swap() {
        int[] arr = {11, 22, 33, 44, 55};
        // 第一个元素 arr[0]
        // 最后一个元素 arr[arr.length-1]
        int temp = arr[0];
        arr[0] = arr[arr.length - 1];
        arr[arr.length - 1] = temp;

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    //需求: 对数组中的元素反转
    public static void reverseArray(int[] arr) {
        for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }
}