Debug
    Debug 概述:程序调试工具。它可以用于查看程序的执行流程。也可以用于追踪程序执行过程来调试程序。

    Debug操作流程:Debug调试,又被称为断点调试,断点其实是一个标记,告诉我们从哪里开始查看
    ① 如何加断点:在行号点击
    ② 如何运行加了断点的程序: 代码区右键Debug运行
    ③ 看哪里:查看Debugger窗口(看代码运行过程以及变化),查看console窗口(结果展示)
    ④ 点哪里: 点Steo Info(F7) 或者F7直接运行,点Stop结束
    ⑤ 如何删除断点 :再 次在行号点击

    案例:减肥计划
    需求:输入星期数,显示今天的减肥活动
    周一:跑步
    周二:游泳
    周三:慢走
    周四:动感单车
    周五: 拳击
    周六: 爬山
    周日: 好好吃一顿
    思路:
    ① 键盘录入一个星期数,用一个变量接收
    ② 对星期数进行判断,这里用if语句实现
    ③ 在对应的语句控制中输出对应的减肥活动
    代码实现:
    // 使用for循环实现
    public static void _main(String[] args) {
    // 键盘录入一个星期数,用一个变量接收 _Scanner scanner = _new _Scanner(System._in);
    System.out.println(“输入一个星期数”);
    int _week = scanner.nextInt();
    // 对星期数进行判断,这里用if语句实现 小于1或者(||)大于7 if (week<1 || week>7){
    System.out.println(“你输入的星期数有误”);
    }else if (week ==1){ System.out.println(“跑步”);
    }else if (week ==2){ System.out.println(“游泳”);
    }else if (week ==3){ System.out.println(“慢走”);
    }else if (week ==4){ System.out.println(“动感单车”);
    }else if (week ==5){ System.out.println(“拳击”);
    }else if (week ==6){ System.out.println(“爬山”);
    }else{ System.out.println(“好好吃一顿”); } }
    // 使用switch语句实现
    Scanner scanner = new _Scanner(System._in);
    // 键盘录入一个星期数,用一个变量接收 . 快捷键导包 使用Alt+Enter
    System.out.println(“输入一个星期数”);
    int _week = scanner.nextInt();
    _switch
    (week){
    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;
    case _7: System._out.println(“好好吃一顿”);
    break;
    default: System.out.println(“你输入的星期数有误”); }
    案例:逢七过
    需求: 任意一个数字包含7或者是7的倍数都要说:过,为了帮助大家更好的玩这个游戏,我们直接在控制台打印出1-100之间满足逢七过的数字,这就知道哪些数字要过。
    // 1、打印1-100之间的数据,用for循环实现数据的获取 for( _int _i = 0;i<= 100 ; i ++){
    // 2、 根据规则使用if语句进行数据得判断,
    // 个位数为7(x%10 == 7) 十分数为7(x/10%10== 7) 被7整除(x%7 ==0)
    _if
    (i%10 == 7 || i/10%10== 7 || i% 7 ==0 ){
    // 3、输出数据
    System.out.println(i);
    }
    }
    案例:不死神兔
    需求:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子到第三月后又生一对兔子,
    假如兔子都不死,问第二十个月的兔子对数为多少?
    找规律:
    第一个月:1
    第二个月:1
    第三个月:2
    第四个月:3
    第五个月:5
    斐波那契数列:1,1,2,3,5… 1+1=2, 2+3=5
    解释:从第三个数字开始,前两位之和等与后面的第三位数
    每一个数据是前两个数据之和,前两个数据是已知数
    arr[0]=1;
    arr[1]=1;
    arr[2]=arr[0] +arr[0] ;
    arr[3]=arr[1] +arr[2] ;

    arr[i]= arr[i-2] + arr[i-1];
    代码实现:
    // 为了存储多个月的兔子对数,定义一个数组,用动态初始化完成元素的初始化,长度为20
    int
    [] arr = new int[20];
    // 因为第一个月和第二个月兔子的对数已知都是1,所以数组的第一个和第二个都是1
    _arr[0] = 1;
    arr[1] = 1;
    // 使用循环实现计算每个月的兔子对数
    for (_int _i= 2; i< arr.length;i ++){
    arr[i]= arr[i-2] + arr[i-1];
    }
    // 输出数组中最后一个元素的值,就是第20个月的兔子对数
    System._out.println(“第二十个月兔子的对数是:” + arr[19]);
    案例:百钱百鸡
    需求:《算经》一书中提出的数学问题:鸡翁值一钱五,鸡母值一钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
    分析:
    1、鸡翁x只 , 鸡母y只,鸡雏z只 :价格 5x+3y+z/3 = 100; 个数 x+y+z=100;
    2、单独一只鸡的个数不能超过多少只
    0<= x <=20; 0<= y <=33; 0<= z <=100;
    使用穷举法就可以罗列出x,y,z的值
    思路:
    public static void _main(String[] args) {
    // ① 第一层循环,用于鸡翁的范围,初始值为i = 0,判断条件是 x <=20 for (int _x = 0 ; x <= 20; x++){
    // ② 第二层循环,用于鸡母的范围,初始值为i = 0,判断条件是 y <=33 for (int _y =0; y<=33 ;y++){
    // 鸡雏的范围,判断条件是 z =100 -x -y int _z = 100 - x- y;
    // 判断表达式 z%3 ==0 和表达式5x + 3y +z/3 =100是否成立 if ( z%3 == 0 && 5x + 3y +z/3 ==100){
    System.out.println(x+”,”+y+”,”+z);
    }
    }
    }
    }
    案例:百钱百鸡
    需求:有这样一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,要求是:求和的元素个位和十位都不能是7,只能是偶数
    思路:
    public static void _main(String[] args) {
    // ① 定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {68,27,95,88,171,996,51,210};
    // ② 定义一个求和变量,初始化为0 int sum = 0;
    // ③ 遍历数组,获取数组中的每一个元素 for (int _i = 0; i< arr.length; i ++){
    // ④ 判断该元素是否满足条件,如果满足条件就累加
    // 个位数不为7:arr[x]%10! =7 ; 十位数不为7:arr[x]/10%10! =7 ; 偶数:arr[x]%2 == 0 ; if (arr[i]%10!=7 && arr[i]/10%10 !=7 && arr[i]%2 ==0){
    sum += arr[i];
    } }
    // 输出求和变量的值 System._out.println(“sum”+sum); }
    案例:百钱百鸡
    需求:设计一个方法,用于比较两个数组的内容是否相同
    思路:
    public static void _main(String[] args) {
    // ① 定义两个数组,分别使用静态初始化完成数组元素的初始化 int[] arr = {68,27,95,88,171,996,51,210};
    int[] arr2 = {68,27,95,88,171,996,51,210};
    // ④ 调用方法,用变量接收 boolean com = _compare(arr,arr2);
    // ⑤ 输出结果 System._out.println(com); }
    // ② 定义一个方法,用于比较两个数组的内容是否相同/
    定义方法需要有两个明确(返回值类型,参数):
    1、返回值类型: boolean
    2、参数:int[]arr, int[]arr2
    /
    // 定义数据类型为Boolean 方法名compare 参数为int[]arr, int[]arr2public static boolean _compare(_int[]arr, int[]arr2){
    // ③ 比较两个数组的内容是否相同,按照下面的步骤实现
    // 1.比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
    // 3.最后循环遍历结束后,返回true
    if (arr.length != arr2.length){ _return false; }
    // 2.如果长度相同,执行遍历 for (_int _i=0; i< arr.length; i++){
    // 3.比较两个数组中的每一个元素,只要元素不相同,返回false if (arr[i] != arr2 [i]){
    return false; } }
    return true; }
    案例:查找数据
    需求:已知一个数组 arr = {68,27,95,88,171,996,51,210}; 键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找出的索引值。例如输入68控制台输出对应的索引值[0]
    分析:
    键盘录入一个数据后,让这个数据和数组中的每一个元素进行比较,如果数据值相等,返回该数据值对应的索引即可。
    但是,加入录入要给数组中不存在的数据,这个时候没有任何内容输出,在实际开发中,如果对应的索引值不存在,我们一般都是返回一个负数,经常使用-1来表示。
    1、代码实现
    public static void _main(String[] args) {
    // ① 定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {68,27,95,88,171,996,51,210};
    // 调用Scanner方法 Scanner sc = _new _Scanner(System._in);
    System.out.println(“请输入要查找的数据:”);
    // ② 键盘录入要查找的数据,用一个变量接收
    int _number = sc.nextInt();
    // ③ 定义一个索引变量,初始值为-1 int _index = -1;
    // ④ 遍历数组,获取数组中的每一个元素 for (int _i=0; i< arr.length;i++){
    // ⑤ 将录入的数据和数组中的每一个元素进行对比
    // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 if (arr[i] == number){
    index = i;
    break;
    }
    }
    // ⑥ 输出索引变量 System._out.println(index); }
    2、定义一个方法调用该方法实现
    public static void _main(String[] args) {
    // ① 定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
    // 调用Scanner方法 Scanner sc = _new _Scanner(System._in);
    System.out.println(“请输入要查找的数据:”);
    int _number = sc.nextInt();
    // 调用定义的方法getIndex() int _index = _getIndex(arr,number);
    // ⑥ 输出索引变量 System._out.println(index);
    }
    _/

    查找指定的数据在数组中的索引
    两个明确:
    返回值类型:int
    参数:int arr[],int number
    /public static int _getIndex(_int[] arr, int _number) {
    // ③ 定义一个索引变量,初始值为-1 int _index = -1;
    // ④ 遍历数组,获取数组中的每一个元素 for (int _i = 0; i < arr.length; i++) {
    // ⑤ 将录入的数据和数组中的每一个元素进行对比
    // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 if (arr[i] == number) {
    index = i;
    break;
    }
    }
    // 返回索引 return index; }
    案例:反转数据
    需求:已知一个数组 arr = {5,9,1,28,7};
    交换后的数组 arr = {7,28,1,9,5};
    分析:第1个元素和最后一个元素交换
    第2个元素和倒数第二个元素交换
    第3个元素和倒数第三个元素交换
    有一个临时空间进行交换
    元素交换:
    假如数组开始索引交start ,结束索引交end
    int temp =arr[start];
    arr[start] =arr[end];
    arr[end] =temp;
    思路:
    _public static void _main(String[] args) {
    // ① 定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {5,9,1,28,7};
    // ④ 调用遍历数组方法 reverse(arr);
    _printArray
    (arr); }
    // 定义一个新的方法 定义方法有两个明确:返回值类型:void 参数:int[] arr_public static void _reverse(_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; } }
    // 定义另一个新的方法 定义方法有两个明确:返回值类型:void 参数:int[] arrpublic static void _printArray(_int[] arr) {
    System.out.print(“[“);
    for (int _i=0; i< arr.length;i++) {
    _if
    (i == arr.length - 1) {
    System.out.print(arr[i]);
    } else {
    System.out.print(arr[i] + “, “); } }
    System.out.println(“]”); }
    案例:评委打分
    需求:在编程竞赛中,有6个评委为参赛选手打分,分数为0-100整数分。
    选手的最后得分为:去掉一个最高分和一个最低分的4个评分平均值(不考虑小数)
    思路:
    public static void _main(String[] args) {
    // ① 定义一个数组,用动态初始化完成数组元素的初始化,长度为6 int[] arr = new int[6];
    // ② 键盘录入评委分数 Scanner scanner= _new _Scanner(System._in);
    // System.out.println(“请输入第一个分数: “);
    // // 放入动态定义的数组当中
    // arr[0] = scanner.nextInt();
    // arr[1] =scanner.nextInt();
    // arr[2]= scanner.nextInt();
    //③ 由于是六个评委打分,所以接收评委分数的操作,用循环改进
    for (_int _i =0; i< arr.length;i++){
    System._out
    .println(“请输入第” + ( i+1 )+ “个分数: “);
    arr[i] = scanner.nextInt(); }
    printArray(arr);
    // 调用最大值的方法 int max = _getMax(arr);
    // 调用最小值的方法 int min = _getMin(arr);
    // 调用所有元素的和的方法 int sum = _getSum(arr);
    // ⑦ 按照计算规则进行计算得到平均分 int avg = (sum - max -min) / (arr.length-2);
    // ⑧ 输出平均分 _System._out.println(“选手的最终得分: “+avg); }
    _// ④ 定义方法实现获取数组中的最高分(数组最大值)
    /
    两个明确:
    返回值类型: int
    参数:int[] arr
    / public static int _getMax(_int[] arr) {
    // 定义一个初始化的值,从第一个数开始遍历数组进行比较输出最大数 int max = arr[0];
    _for
    (int _i =1; i< arr.length; i++){
    _if
    (arr[i] > max){
    max = arr[i]; } }
    return _max; }
    // ⑤ 定义另一个方法实现获取最低分(数组最小值)
    / 两个明确:
    返回值类型: int
    参数:int[] arr
    / public static int _getMin(_int[] arr) {
    // 定义一个初始化的值,从第一个数开始遍历数组进行比较输出最小数 int min = arr[0];
    _for
    (int _i =1; i< arr.length; i++){
    _if
    (arr[i] < min){
    min = arr[i]; } }
    return _min; }
    // ⑥ 定义方法实现获取数组中的所有元素的h和(数组元素求和)
    /
    两个明确:
    返回值类型: int
    参数:int[] arr
    / public static int _getSum(_int[] arr) {
    int _sum = arr[0];
    _for
    (int _i =0; i< arr.length; i++){
    sum += arr[i]; }
    _return _sum; }
    // 定义方法实现获取数组 public static void _printArray(_int[] arr) {
    System.out.print(“[“);
    for (int _i=0; i< arr.length;i++) {
    _if
    (i == arr.length - 1) {
    System.out.print(arr[i]);
    } else {
    System.out.print(arr[i] + “, “); } }
    System.out.println(“]”); }