黑马程序员技术交流社区

标题: 【黑马程序员杭州】JavaEE课程笔记day06-基础语法 [打印本页]

作者: 小江哥    时间: 2017-12-13 13:39
标题: 【黑马程序员杭州】JavaEE课程笔记day06-基础语法
本帖最后由 小江哥 于 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();
    }
}

校区捷报
众览群雄,唯我杭城独秀—一贴汇总杭州校区所有就业薪资
http://bbs.itheima.com/thread-345570-1-1.html





作者: 小年青    时间: 2017-12-13 13:46
66666666666
作者: PHP老曹    时间: 2017-12-13 13:46
十分不错,正在、学习中
作者: 宋子    时间: 2017-12-13 13:47
干货,学习了
作者: gy_yt    时间: 2017-12-13 13:55
6666666,干货
作者: nhm    时间: 2017-12-13 15:53
6666666666666
作者: Rocket_冷风    时间: 2017-12-13 16:08
干货,学习了
作者: 采姑娘的小蘑菇    时间: 2017-12-13 16:24
哇哇哇 纯纯的干货哎
作者: huangjinchao.ar    时间: 2017-12-15 17:07

哇哇哇 纯纯的干货哎
作者: 小核桃仁    时间: 2017-12-15 22:36
棒棒哒
作者: 猫先森    时间: 2017-12-16 11:11
非常细致,学习中




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2