A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小江哥 于 2017-12-29 20:03 编辑

第06天 java基础语法
今日内容介绍
u Eclipse断点调试
u 基础语法的练习
第1章  Eclipse断点调试   
1.1     Eclipse断点调试概述
Eclipse的断点调试可以查看程序的执行流程和解决程序中的bug
1.2     Eclipse断点调试常用操作:
      A:什么是断点:
         就是一个标记,从哪里开始。
   B:如何设置断点:
         你想看哪里的程序,你就在那个有效程序的左边双击即可。
   C:在哪里设置断点:
         哪里不会点哪里。
         目前:我们就在每个方法的第一条有效语句上都加。
   D:如何运行设置断点后的程序:
         右键 -- Debug as -- JavaApplication
   E:看哪些地方:
         Debug:断点测试的地方
              在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。
         Variables:查看程序的变量变化
         ForDemo:被查看的源文件
         Console:控制台
   F:如何去断点:
         再次双击即可
         找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。
1.2.1     案例代码一:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 断点调试:
 *      A:查看程序的执行流程
 *      B:调试程序
 *
 * 断点:
 *      其实就是一个标记
 *
 * 在哪里加呢?
 *      想加哪里就加哪里,一般是加在我们看不懂的地方
 *
 * 如何加呢?
 *      在代码区域的最左边双击即可
 *
 * 如何运行加断点的程序呢?
 *      代码区域 -- 右键 -- Debug as -- Java Application
 *      会弹出一个页面让我们选择是否进入debug模式,选择yes。
 *
 * 如何让程序往下执行呢?
 *      Step Over 执行下一步
 *      F6
 *
 * 看那些区域呢?
 *      代码区域:看程序的执行步骤
 *      Debug区域:看程序的执行步骤
 *      Variables:看变量的创建,赋值,销毁等
 *      Console:看程序的输入和输出
 *
 * 如何去除断点:
 *      A:把加断点的动作再来一遍
 *      B:在debug视图中,找到Breakpoints,选中断点,点击双x即可
 */
public class DebugDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a + b;
        System.out.println(c);
    }
}
 
 
1.3     断点调试练习
1.3.1     案例代码二:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 需求:看循环的执行流程(1-5求和案例)
 */
public class DebugTest {
    public static void main(String[] args) {
        // 定义求和变量
        int sum = 0;
 
        // 循环获取每一个数据
        for (int x = 1; x <= 5; x++) {
            sum += x;
        }
 
        System.out.println("sum:" + sum);
    }
}
 

1.3.2     案例代码三:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:看方法的调用流程
 *
 * 有方法调用的时候,要想看到完整的流程,每个方法都要加断点,建议方法进入的第一条有效语句加断点
 */
public class DebugTest2 {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);
 
        // 接收数据
        System.out.println("请输入第一个数据:");
        int a = sc.nextInt();
 
        System.out.println("请输入第二个数据:");
        int b = sc.nextInt();
 
        // 调用方法
        int result = sum(a, b);
 
        // 输出结果
        System.out.println("result:" + result);
    }
 
    // 求和方法
    public static int sum(int a, int b) {
        return a + b;
    }
}

1.3.3     案例代码四:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 参数是基本数据类型:
 *      形式参数的改变不影响实际参数。
 */
public class DebugTest3 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + ",b:" + b);
        change(a, b);
        System.out.println("a:" + a + ",b:" + b);
 
    }
 
    public static void change(int a, int b) {
        System.out.println("a:" + a + ",b:" + b);
        a = b;
        b = a + b;
        System.out.println("a:" + a + ",b:" + b);
    }
}
 
1.3.4     案例代码五:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 参数是基本数据类型:
 *      形式参数的改变不影响实际参数。
 */
public class DebugTest3 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:" + a + ",b:" + b);
        change(a, b);
        System.out.println("a:" + a + ",b:" + b);
}
    public static void change(int a, int b) {
        System.out.println("a:" + a + ",b:" + b);
        a = b;
        b = a + b;
        System.out.println("a:" + a + ",b:" + b);
}
}
第2章  基础语法的练习
2.1  循环,if和switch练习
2.1.1     键盘录入月份,输出对应的季节(if…elseswitch实现)
2.1.1.1   案例代码六:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:键盘录入一个月份,输出该月份对应的季节。
 *      一年有四季
 *      3,4,5   春季
 *      6,7,8   夏季
 *      9,10,11 秋季
 *      12,1,2  冬季
 *
 * 分析:
 *      A:键盘录入一个月份,用Scanner实现
 *      B:判断该月份是几月,根据月份输出对应的季节
 *          if
 *          switch
 */
public class Test {
    public static void main(String[] args) {
        // 键盘录入一个月份,用Scanner实现
        Scanner sc = new Scanner(System.in);
 
        // 接收数据
        System.out.println("请输入一个月份(1-12):");
        int month = sc.nextInt();
 
        // 判断该月份是几月,根据月份输出对应的季节
        /*
        if (month == 1) {
            System.out.println("冬季");
        } else if (month == 2) {
            System.out.println("冬季");
        } else if (month == 3) {
            System.out.println("春季");
        } else if (month == 4) {
            System.out.println("春季");
        } else if (month == 5) {
            System.out.println("春季");
        } else if (month == 6) {
            System.out.println("夏季");
        } else if (month == 7) {
            System.out.println("夏季");
        } else if (month == 8) {
            System.out.println("夏季");
        } else if (month == 9) {
            System.out.println("秋季");
        } else if (month == 10) {
            System.out.println("秋季");
        } else if (month == 11) {
            System.out.println("秋季");
        } else if (month == 12) {
            System.out.println("冬季");
        } else {
            System.out.println("你输入的月份有误");
        }
        */
       
        //代码太长了,能不能简单一些呢?
        //能,如何简单一些呢?
        //我们可以把相同季节的月份放到一起来判断
        //(month==3 || month==4 || month==5)
        if(month==1 || month==2 || month==12) {
            System.out.println("冬季");
        }else if(month==3 || month==4 || month==5) {
            System.out.println("春季");
        }else if(month==6 || month==7|| month==8) {
            System.out.println("夏季");
        }else if(month==9 || month==10 || month==11) {
            System.out.println("秋季");
        }else {
            System.out.println("你输入的月份有误");
        }
    }
}
2.1.1.2   案例代码七:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:键盘录入一个月份,输出该月份对应的季节。
 *      一年有四季
 *      3,4,5   春季
 *      6,7,8   夏季
 *      9,10,11 秋季
 *      12,1,2  冬季
 *
 * 分析:
 *      A:键盘录入一个月份,用Scanner实现
 *      B:判断该月份是几月,根据月份输出对应的季节
 *          if
 *          switch
 *
 * case穿透。
 */
public class Test2 {
    public static void main(String[] args) {
        // 键盘录入一个月份,用Scanner实现
        Scanner sc = new Scanner(System.in);
 
        // 接收数据
        System.out.println("请输入月份(1-12):");
        int month = sc.nextInt();
 
        // 用switch语句实现
        /*
        switch (month) {
        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;
        case 8:
            System.out.println("夏季");
            break;
        case 9:
            System.out.println("秋季");
            break;
        case 10:
            System.out.println("秋季");
            break;
        case 11:
            System.out.println("秋季");
            break;
        case 12:
            System.out.println("冬季");
            break;
        default:
            System.out.println("你输入的月份有误");
            break;
        }
        */
       
        //case 穿透
        /*
        switch(month) {
        case 1:
            System.out.println("hello");
            //break;
        case 2:
            System.out.println("world");
            break;
        default:
            System.out.println("over");
            break;
        }
        */
       
        //通过case穿透现象改进代码
        switch(month) {
        case 1:
        case 2:
        case 12:
            System.out.println("冬季");
            break;
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏季");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋季");
            break;
        default:
                System.out.println("你输入的月份有误");
                break;
        }
    }
}
 
2.1.2     打印5位数中所有的回文数
2.1.2.1   案例代码八:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 需求:打印5位数中的所有回文数。
 *      什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。
 *
 * 分析:
 *      A:5位数告诉了我们数据的范围,用for循环实现
 *      B:获取每一个5位数,然后得到它的个位,十位,千位,万位
 *          假设x是一个5位数:
 *              个位:x%10
 *              十位:x/10%10
 *              千位:x/10/10/10%10
 *              万位:x/10/10/10/10%10
 *      C:把满足条件的数据输出即可
 */
public class Test3 {
    public static void main(String[] args) {
        //5位数告诉了我们数据的范围,用for循环实现
        for(int x=10000; x<100000; x++) {
            //获取每一个5位数,然后得到它的个位,十位,千位,万位
            int ge = x%10;
            int shi = x/10%10;
            int qian = x/10/10/10%10;
            int wan = x/10/10/10/10%10;
           
            //把满足条件的数据输出即可
            if((ge==wan) && (shi==qian)) {
                System.out.println(x);
            }
        }
    }
}
2.2  数组练习
2.2.1   不死神兔问题
2.2.1.1   案例代码九
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 需求:
 *      有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
 *      假如兔子都不死,问第二十个月的兔子对数为多少?
 *
 * 规律:
 *      第一个月:1
 *      第二个月:1
 *      第三个月:2
 *      第四个月:3
 *      第五个月:5
 *      ...
 *
 *      规律:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和。
 *          第一个月和第二个月的兔子对数是1
 * 分析:
 *      int[] arr = new int[20];
 *
 *      arr[0] = 1;
 *      arr[1] = 1;
 *
 *      arr[2] = arr[0] + arr[1];
 *      arr[3] = arr[1] + arr[2];
 *      arr[4] = arr[2] + arr[3];
 *      ...
 */
public class Test4 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = new int[20];
       
        //初始化第一个月和第二个月的兔子对数c
        arr[0] = 1;
        arr[1] = 1;
       
        for(int x=2; x<arr.length; x++) {
            arr[x] = arr[x-2] + arr[x-1];
        }
       
        System.out.println("第二十个月的时候的兔子对数是:"+arr[19]);
    }
}
2.2.2     求数组中满足要求的元素和
2.2.2.1   案例代码十:
[Java] 纯文本查看 复制代码
package com.itheima;
/*
 * 需求:
 * (1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}
 * (2)求出该数组中满足要求的元素和。
 *      要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
 *
 * 分析:
 *      A:定义一个int类型的一维数组
 *      B:定义一个求和变量
 *      C:遍历数组,获取到数组中的每一个元素
 *      D:判断该元素是否满足如下要求,如果是就累加,否则,不搭理它
 *          x%2==0
 *          x%10 != 7
 *          x/10%10 !=7
 *      E:输出结果
 */
public class Test5 {
    public static void main(String[] args) {
        //定义一个int类型的一维数组
        int[] arr = {171,72,19,16,118,51,210,7,18};
       
        //定义一个求和变量
        int sum = 0;
       
        //遍历数组,获取到数组中的每一个元素
        for(int x=0; x<arr.length; x++) {
            if((arr[x]%10 != 7) && (arr[x]/10%10 != 7) && (arr[x]%2 == 0)) {
                sum += arr[x];
            }
        }
       
        System.out.println("sum:"+sum);
    }
}

2.2.3     裁判评分2.2.3.1   案例代码十一:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
 * 选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。
 * 请写代码实现。(不考虑小数部分)
 *
 * 分析:
 *      A:定义一个长度为6的数组。
 *      B:通过键盘录入的方式给出评委的分数
 *      C:写方法实现获取数组中的最大值,最小值
 *      D:写方法实现数组元素的求和
 *      E:平均分: (和-最高分-最低分)/(arr.length-2)
 *      F:输出分数即可
 */
public class Test6 {
    public static void main(String[] args) {
        //定义一个长度为6的数组
        int[] arr = new int[6];
       
        //通过键盘录入的方式给出评委的分数
        Scanner sc = new Scanner(System.in);
        for(int x=0; x<arr.length; x++) {
            // arr[x] = sc.nextInt();
            System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):");
            int number = sc.nextInt();
            arr[x] = number;
        }
       
        //写方法实现获取数组中的最大值,最小值
        int max = getMax(arr);
        int min = getMin(arr);
       
        //写方法实现数组元素的求和
        int sum = sum(arr);
       
        // (和-最高分-最低分)/(arr.length-2)
        int avg = (sum-max-min)/(arr.length-2);
       
        //输出分数即可
        System.out.println("该选手的最终得分是:"+avg);
    }
   
    //数组元素求和
    public static int sum(int[] arr) {
        int sum = 0;
       
        for(int x=0; x<arr.length; x++) {
            sum += arr[x];
        }
       
        return sum;
    }
   
    //数组中的最小值
    public static int getMin(int[] arr) {
        int min = arr[0];
       
        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }
       
        return min;
    }
   
    //数组中的最大值
    public static int getMax(int[] arr) {
        int max = arr[0];
       
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
       
        return max;
    }
}
2.2.4     数组反转
2.2.4.1   案例代码十二:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:
 * (1)键盘录入5个int类型的数据存储数组arr中
 * (2)定义方法将arr数组中的内容反转
 * (3)定义方法对反转后的数组进行遍历
 *
 * 分析:
 *      A:定义一个长度为5的数组
 *      B:通过键盘录入数据给数组中的元素赋值
 *      C:定义方法将arr数组中的内容反转
 *          什么是反转?如何反转?
 *      D:定义方法遍历数组
 */
public class Test7 {
    public static void main(String[] args) {
        // 定义一个长度为5的数组
        int[] arr = new int[5];
 
        // 通过键盘录入数据给数组中的元素赋值
        Scanner sc = new Scanner(System.in);
        for (int x = 0; x < arr.length; x++) {
            System.out.println("请给出第" + (x + 1) + "个元素");
            arr[x] = sc.nextInt();
        }
       
        System.out.println("反转前的数组元素:");
        printArray(arr);
 
        // 定义方法将arr数组中的内容反转
        reverse(arr);
       
        System.out.println("反转后的数组元素:");
        //定义方法遍历数组
        printArray(arr);
    }
   
    //遍历数组
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0;x<arr.length; x++){
            if(x == arr.length-1) {
                System.out.println(arr[x]+"]");
            }else {
                System.out.print(arr[x]+", ");
            }
        }
    }
   
 
    /*
     * 两个明确: 返回值类型:void 参数列表:int[] arr
     */
    public static void reverse(int[] arr) {
        for(int startIndex=0,endIndex=arr.length-1;startIndex<=endIndex;startIndex++,endIndex--) {
            int temp = arr[startIndex];
            arr[startIndex] = arr[endIndex];
            arr[endIndex] = temp;
        }
    }
}

2.2.5     数组基本查找
2.2.5.1   案例代码十三:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
/*
 *需求:数组元素查找(查找指定元素第一次在数组中出现的索引)
 *(1)给定数组int[] arr = {5,7,3,2,5};
 *(2)要查询的元素通过键盘录入的方式确定
 *(3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据)
 *
 *分析:
 *      A:给定数组int[] arr = {5,7,3,2,5};
 *      B:要查询的元素通过键盘录入的方式确定
 *      C:定义一个查找数组元素第一次出现位置的方法
 *          遍历数组,获取到每一个元素,进行比较,如果想等,就直接把该处的索引返回。
 *      D:调用方法,输出结果
 */
public class Test8 {
    public static void main(String[] args) {
        // 给定数组int[] arr = {5,7,3,2,5};
        int[] arr = { 5, 7, 3, 2, 5 };
 
        //要查询的元素通过键盘录入的方式确定
        Scanner sc = new Scanner(System.in);
       
        System.out.println("请输入要查找的元素:");
        int number = sc.nextInt();
       
        //定义一个查找数组元素第一次出现位置的方法
        //调用方法
        int index =getIndex(arr, number);
        System.out.println("index:"+index);
    }
   
   
    /*
     * 两个明确:
     *      返回值类型:int
     *      参数列表:int[] arr,int value
     */
    public static int getIndex(int[] arr,int value) {
        //遍历数组,获取到每一个元素,进行比较,如果想等,就直接把该处的索引返回。
        /*
        for(int x=0; x<arr.length; x++) {
            if(arr[x] == value) {
                return x;
            }
        }
       
        return -1;
        */
       
       
        int index = -1;
       
        for(int x=0; x<arr.length; x++) {
            if(arr[x] == value) {
                index = x;
                break;
            }
        }
       
        return index;
    }
}
 
2.2.6     数据加密
2.2.6.1   案例代码十四:
[Java] 纯文本查看 复制代码
package com.itheima;
import java.util.Scanner;
 
/*
 * 需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
 * 每位数字都加上5,然后除以10的余数代替该数字,
 * 再将第一位和第四位交换,第二位和第三位交换,
 * 请把加密后的数据输出到控制台
 *
 * 分析:
 *      A:键盘录入一个四位数
 *      B:对数据进行加密
 *          举例:
 *              4567
 *              把这个四位数分成个,十,百,千存储到数组中
 *              int[] arr = {4,5,6,7};
 *              每位数字都加上5:
 *                  arr[x] += 5;    {9,10,11,12}
 *              然后除以10的余数代替该数字:
 *                  arr[x] %= 10;   {9,0,1,2}
 *               再将第一位和第四位交换,第二位和第三位交换:
 *                  {9,0,1,2}       {2,1,0,9}
 *      C:输出加密后的数据
 */
public class Test9 {
    public static void main(String[] args) {
        //键盘录入一个四位数
        Scanner sc = new Scanner(System.in);
       
        //接收数据
        System.out.println("请输入一个四位数:");
        int number = sc.nextInt();
       
        //分别得到该数据的每一个位上的数据
        int ge = number%10;
        int shi = number/10%10;
        int bai = number/10/10%10;
        int qian = number/10/10/10%10;
       
        //定义一个数组
        int[] arr = new int[4];
        arr[0] = qian;
        arr[1] = bai;
        arr[2] = shi;
        arr[3] = ge;
       
        //加密规则
        //每位数字都加上5,然后除以10的余数代替该数字
        for(int x=0; x<arr.length; x++) {
            arr[x] += 5;
            arr[x] %= 10;
        }
       
        //再将第一位和第四位交换,第二位和第三位交换
        int temp = arr[0];
        arr[0] = arr[3];
        arr[3] = temp;
       
        int temp2 = arr[1];
        arr[1] = arr[2];
        arr[2] = temp2;
       
        //输出加密后的数据
        for(int x=0; x<arr.length; x++) {
            System.out.print(arr[x]);
        }
        System.out.println();
    }
}
 

校区捷报
众览群雄,唯我杭城独秀—一贴汇总杭州校区所有就业薪资




10 个回复

倒序浏览
小年青 来自手机 中级黑马 2017-12-13 13:46:25
沙发
66666666666
回复 使用道具 举报
PHP老曹 来自手机 高级黑马 2017-12-13 13:46:36
藤椅
十分不错,正在、学习中
回复 使用道具 举报
宋子 来自手机 初级黑马 2017-12-13 13:47:53
板凳
干货,学习了
回复 使用道具 举报
gy_yt 来自手机 中级黑马 2017-12-13 13:55:14
报纸
6666666,干货
回复 使用道具 举报
nhm 来自手机 中级黑马 2017-12-13 15:53:17
地板
6666666666666
回复 使用道具 举报
Rocket_冷风 来自手机 中级黑马 2017-12-13 16:08:18
7#
干货,学习了
回复 使用道具 举报
哇哇哇 纯纯的干货哎
回复 使用道具 举报

哇哇哇 纯纯的干货哎
回复 使用道具 举报
小核桃仁 来自手机 中级黑马 2017-12-15 22:36:18
10#
棒棒哒
回复 使用道具 举报
非常细致,学习中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马