欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA零基础入门笔记(十)-重载回顾&数组练习

程序员文章站 2022-03-05 13:09:12
...

1,回顾

方法在什么时候构成重载:

  • 必须在同一个类
  • 方法名必须一致
  • 参数必须不一样(参数的个数不一样,参数的类型不一样,类型的顺序不一样
  • 跟返回值没有任何关系

第一个条件,第二个条件,第三个条件必须同时满足,才算方法的重载。

有了方法的重载,会有什么好处呢?
  • 针对于方法的定义者:

    ​ 会把同一种功能的方法,他的方法名定义为一样的。就不需要起那么多不同名字的方法了。

  • 针对于方法的调用者:

    ​ 就不需要记忆那么多方法名了,同种功能的方法,只要记一个就可以了。

方法的参数传递:

  • 调用方法的时候,传递的是基本数据类型

    ​ 在调用方法的时候,传递的都是变量记录的东西,基本数据类型,记录的是真实的值。

    ​ 传递的是值。

  • 调用方法的时候,传递的是引用数据类型

    ​ 在调用方法的时候,传递的也是变量记录的东西,引用数据类型,记录的是地址值。

    ​ 传递的是地址值。

Debug(会使用即可)

功能:

​ 可以看代码一步一步是怎么运行的。

  • 打断点

    • 如果要看所有的代码

      每一个方法的第一行有效语句前面打上断点。一个方法只要打一个就可以了。

    • 如果要看局部的代码

      哪里不会点哪里

  • 运行debug模式

    ​ 右键空白处,点击debug

  • 看哪里

    ​ 看下面debugger界面,还有控制台界面。

    ​ debugger界面:方法的运行情况。

    ​ 方法中变量记录值的情况。

    ​ 控制台界面:输出语句的输出情况

    ​ 如果有键盘录入,也需要在控制台录入,否则,debug无法进入到下一步。

  • 点击下一步,让debug一步一步的运行起来。

    点击快捷键 F7

    或者用鼠标点击 step into

  • 停止debug

    点击控制台左边,红色的方块。(运行指示灯)

  • 取消断点

    断点比较少:直接手动点击取消。

    断点比较多:点击控制台左边,多个红色方块重叠的按钮。

2,求和

题目:

有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。

求出该数组中满足要求的元素和,

要求是:求和的元素个位和十位都不能是7,并且只能是偶数

步骤:

1,定义一个数组

2,循环遍历数组得到每一个元素

3,判断每一个元素是否满足条件

4,将满足条件的数字进行累加(此时需要回到循环外面再定义一个求和变量)

5,循环结束输出结果

解答:
public class Test1 {
    public static void main(String[] args) {
       /* 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。
        求出该数组中满足要求的元素和,
        要求是:求和的元素个位和十位都不能是7,并且只能是偶数*/


        //分析
        //1.定义一个数组
        int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
        int sum = 0;
        //2.循环遍历数组得到每一个元素
        for (int i = 0; i < arr.length; i++) {
            //i      --- 依次表示数组中的每一个索引
            //arr[i] --- 依次表示数组中的每一个元素
            //3.判断每一个元素是否符合条件
            if ((arr[i] % 10 != 7) && (arr[i] / 10 % 10 != 7) && (arr[i] % 2 == 0)) {
                //4。如果符合条件,就累加求和,否则不管。
                sum = sum + arr[i];//sum += arr[i];   ---  sum = (int)(sum + arr[i])
                System.out.println(arr[i]);
            }
        }
        System.out.println("求和为" + sum);

    }
}

3,统计

题目:

有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。
统计符合条件的数字有多少个?
要求是:求和的元素个位和十位都不能是7,并且只能是偶数

步骤:

1,定义一个数组

2,循环遍历数组得到每一个元素

3,判断每一个元素是否满足条件

4,将满足条件的数字进行累加(此时需要回到循环外面再定义一个求和变量)

5,循环结束输出结果

解答:
public class Test2 {
    public static void main(String[] args) {
        /* 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。
        统计符合条件的数字有多少个?
        要求是:求和的元素个位和十位都不能是7,并且只能是偶数*/

        //技巧:
        //一旦你在题目当中,看到要数数了。 (数有几个)
        //那么一定是用到计数器思想。
        //定义一个变量,初始化值为0
        //在符合条件的时候变量自增一次即可。


        //分析
        //1.定义一个数组
        int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
        //定义一个计数器,实际上就是一个变量而已
        int count = 0;
        //2.循环遍历数组得到每一个元素
        for (int i = 0; i < arr.length; i++) {
            //i      --- 依次表示数组中的每一个索引
            //arr[i] --- 依次表示数组中的每一个元素
            //3.判断每一个元素是否符合条件
            if ((arr[i] % 10 != 7) && (arr[i] / 10 % 10 != 7) && (arr[i] % 2 == 0)) {
                //4。如果符合条件,那么计数器就自增。
                count++;
            }
        }
        System.out.println("符合条件的数字有" + count + "个");
    }
}

4,查找元素

题目:

已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。

并在控制台输出找到的索引值。如果没有查找到,则输出-1

步骤:

1,定义一个数组

2,键盘录入一个数字准备跟数组中的数字进行比较

3,定义一个计数器,表示记录当前数字在数组中出现了几次

4,循环遍历数组,依次得到每一元素。

5,拿着键盘录入的数字跟数组中的元素进行比较。

6,如果满足条件,则打印当前索引。计数器++

7,对计数器进行判断,如果为0,表示数字没有在数组中存在过,打印-1

解答:
public class Test3 {
    public static void main(String[] args) {
        //注释代码的快捷键
        //1.选中要注释的代码
        //2.按下快捷键 ctrl + /              单行注释
        //            ctrl + shift + /      多行注释


/*        已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。
        并在控制台输出找到的索引值。如果没有查找到,则输出-1*/

        //分析:
        //1.定义一个数组arr = {19, 28, 37, 46, 50};
        int [] arr = {19, 28, 37, 46, 50};

        //2、键盘录入一个数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入一个数字");
        int number = sc.nextInt();//快速生成方法的左边的接受变量----ctrl + alt + v
        //3.查找录入的数字number,在arr中所处的索引。如果不存在则返回-1.
        //问:在什么情况下,才能认为键盘录入的数字,在数组中是不存在的?
        //灵活运行计数器思想。数一下,number在数组中出现了多少次?
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            //判断键盘录入的数字,跟当前遍历到的数组是否相等。
            if(arr[i] == number){
                //如果相等,则打印索引
                System.out.println(i);
                //表示键盘录入的数字,出现了一次。
                count++;
            }
        }
        //当循环结束之后,count的值就表示,键盘录入的数字,在数组中出现了几次。
        //因为只有循环结束之后,才能叫做数组里面所有的元素都找完,此时才能打印-1
        if(count == 0){
            //如果count为0,表示键盘录入的数字,是不存在的。
            System.out.println(-1);
        }
    }
}

5,满足条件的数字存入数组

题目:

​ 将 10 – 20 之间能被5整除的数存入到数组当中,要求存入的位置是随机的,最后遍历这个数组。

步骤:

​ 1,先确定符合条件的数字有多少个?

​ 2,利用个数,来创建数组。

​ 3,把这个范围中符合条件数字,再次遍历出来,并存入到数组当中。

​ 4,存入之后随机位置。

​ 5,最后遍历。

解答:
public class Test4 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 10; i <= 20; i++) {
            if (i % 5 == 0) {
                count++;
            }
        }
        //循环结束之后,count的值,其实就是数组的长度
        System.out.println(count);
        //2.创建数组
        //自己定义一个变量去表示当前应存入数字的索引
        int index = 0;
        int [] arr = new int[count];
        //3,可以把符合条件的数字,存入到数组当中。
        for (int i = 10; i <= 20; i++) {
            if (i % 5 == 0) {
                //存入到数组当中。
                //格式:
                arr[index] = i;
                index++;
            }
        }
        //3.遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

再次,打乱数组里面的数字顺序。

public class Test5 {
    public static void main(String[] args) {
        //打乱数组中数字的顺序
        //在上一题做完之后,数组中数字就是下面这个样子了。
        int[] arr = {10, 15, 20};

        Random r = new Random();
        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            //获取一个随机索引。 (0 1 2)
            int randomIndex = r.nextInt(arr.length);
            //把i索引 跟 随机索引上的数字进行交换
            int temp  = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }

        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

6,获取随机字符

题目:

​ 创建一个字符数组,数组中存入A-Z,a-z。并从该数组中获取一个随机字符

步骤:

1,定义一个长度为52的数组。用来存储A-Z,a-z

2,将A-Z存入数组当中

3,将a-z存入数组当中

4,从数组中随机获取一个元素

解答:
public class Test6 {
    public static void main(String[] args) {
//        创建一个字符数组,数组中存入A-Z,a-z。
//        并从该数组中获取一个随机字符

        //因为数组当中,要存入A-Z。a-z。所以,数组的长度为52
        char [] charArr = new char[52];
        //把A-Z  a-z存入到数组当中。
        //ASCII码表

        int index = 0;
        for (int i = 'a' ; i <= 'z'; i++) {
            //i表示什么? 依次表示 字符a~字符z之间的每一个字符,在ASCII码表中对应的数字
            charArr[index] =(char)i;
            index++;
        }
        //当循环结束之后,就表示小写的a~小写的z就已经存入到数组当中了

        for (int i = 'A' ; i <= 'Z'; i++) {
            //i表示什么? 依次表示 字符A~字符Z之间的每一个字符,在ASCII码表中对应的数字
            charArr[index] =(char)i;
            index++;
        }
        //当循环结束之后,就表示大写的A-Z,和小写的a-z就已经存入到数组当中了。

       //在数组当中获取一个随机字符
        //因为数组中的内容,我无法确定。
        //所以如果要随机获取数组中的元素。
        //1,获取随机索引。
        //2,通过索引再获取元素。
        Random r = new Random();
        //获取一个随机的索引
        int randomIndex = r.nextInt(charArr.length);
        //通过索引来获取元素
        char c = charArr[randomIndex];
        //输出得到的元素
        System.out.println(c);

    }
}

7,验证码

题目:

生成一个5位数的验证码

验证码由 4个 (A-Z a-z) 和1个 (0-9)的字符组成

数字固定在最后一位即可- 例如:gAgZ6

步骤:

1,创建了一个长度为52的数组。

​ 因为大写字符 + 小写字符一共有52个,所以数组长度为52.

2,把大写的A字符到大写的Z字符,存入到数组当中。

3,把小写的a字符到小写的z字符,存入到数组当中。

4,从数组中获取一个随机的元素。

  • 先获取一个随机的索引
  • 根据随机索引获取元素

5,把第4步重复4次即可。

6,获取一个0-9之间的数字。

解答:
public class Test8 {
    public static void main(String[] args) {
        //生成一个5位数的验证码
        //验证码由 4个 (A-Z a-z) 和1个 (0-9)的字符组成
        //数字固定在最后一位即可- 例如:gAgZ6

        //1.要把A-Z   a-z 添加到一个字符数组当中。
        char [] charArray = new char[52];

        //index表示当前要操作的那个索引
        int index = 0;
        for (int i = 'A'; i <= 'Z'; i++) {
            //i 表示 ‘A’ ~ ‘Z’ 之间的字符所对应的数字
            //System.out.println(i);
            //System.out.println((char) i);
            charArray[index] = (char) i;
            index++;
        }
        //当循环结束之后,就表示数组中已经存了A-Z

        for (int i = 'a'; i <= 'z'; i++) {
            //i 表示 ‘A’ ~ ‘Z’ 之间的字符所对应的数字
            //System.out.println(i);
            //System.out.println((char) i);
            charArray[index] = (char) i;
            index++;
        }

        //遍历
        for (int i = 0; i < charArray.length; i++) {
            System.out.print(charArray[i] + " ");
        }
        System.out.println();


        Random r = new Random();
        //上面的动作重复4次。
        for (int i = 0; i < 4; i++) {
            //从数组中获取一个随机字符
            //获取一个随机索引
            int randomIndex = r.nextInt(charArray.length);
            //根据随机索引获取对应的元素
            char randomChar = charArray[randomIndex];
            System.out.print(randomChar);
        }

        //4.再生成一个0-9之间的随机数。
        int randomNumber = r.nextInt(10);
        System.out.print(randomNumber);
    }
}

8,点名器

题目:

键盘录入班级人数, 根据班级人数录入班级学员姓名

从录入的学员姓名中, 随机取出一个, 并打印在控制台

步骤:

1,键盘录入班级人数

2,根据键盘录入的人数创建数组

3,将学生的名字存入到数组当中

4,获取一个数组的随机索引

5,通过随机索引获取名字

6,输出名字

解答:
public class Test9 {
    public static void main(String[] args) {
//        键盘录入班级人数,  根据班级人数录入班级学员姓名
//        从录入的学员姓名中, 随机取出一个, 并打印在控制台

        //1,键盘录入班级的人数
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入班级的人数");
        int studentCount = sc.nextInt();
        //2,根据人数来创建数组。
            //因为人数就是数组的长度。
        String [] arr = new String[studentCount];
        //3.键盘录入给数组赋值
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请录入班级学生的姓名");
            String name = sc.next();
            arr[i] = name;
        }
        System.out.println("-----------------------");

        //4.从数组中随机获取一个学生的名字
        //先获取一个随机的索引
        //然后通过这个随机的索引获取元素
        Random r = new Random();
        int randomIndex = r.nextInt(arr.length);// 在小括号中写arr.length就表示是随机获取数组中的任意一个索引
                                                //因为这个范围已经将数组中,所有的索引都包括了。
        //根据获取的随机索引来获取元素
        String randomName = arr[randomIndex];
        //输出这个随机的名字
        System.out.println(randomName);


    }
}

9,评委打分

题目:

在编程竞赛中,有6个评委为参赛的选手打分,分数均为整数。

选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

步骤:

1,创建一个长度为6的数组。用来存6个评委的分数。

2,键盘录入评委的打分,并存入到数组当中。

3,求6个评委的总分。

4,求最大值

5,求最小值

6,求平均分 (总分 - 最大 - 最小) / 4

解答:
public class Test11 {
    public static void main(String[] args) {
        //在编程竞赛中,有6个评委为参赛的选手打分,分数均为整数。
        //选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。


        //1,创建一个长度为6的数组。
        int[] arr = new int[6];
        //2.键盘录入评委的打分,并把打分存入到数组当中
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请录入评委的打分");
            int score = sc.nextInt();
            //把键盘录入的分数,存入到数组当中
            arr[i] = score;
        }
        //当循环结束之后,表示数组中,已经存满了评委的打分
        //3.求数组当中所有数字的和
        int sum = getSum(arr);
        //4.求最大值
        int max = getMax(arr);
        //5.求最小智
        int min = getMin(arr);

        //6.求平均值
        int avg = (sum - max - min) / (arr.length - 2);

        System.out.println("该选手最终得分为" + avg);

    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }


    public static int getSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum + arr[i];
        }
        return sum;
    }
}