JAVA基础练习题

1.生成两个1-10的随机数,分别作为两个数组的长度.

2.向第一个数组中以循环键盘录入的方式添加元素

3.生成1-100之间的随机数 为第二个数组的每个元素赋值

4.将两个数组合并 为一个新的数组

5.去掉新数组的最大值和最小值 求平均值

package practise.day04.p1;

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Random r = new Random();
        //随机生成一个1-10之间的整数,为数组arr的长度赋值
        int length = r.nextInt(10)+1;

        int [] arr = new int[length];
        Scanner sc =new Scanner(System.in);
        //键盘录入数组arr的元素
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第"+i+"个元素");
            arr [i] = sc.nextInt();
        }
        //为数组arr2的长度赋值
        int length2 = r.nextInt(10)+1;
        int [] arr2 = new int[length2];
        for (int i = 0; i < arr2.length; i++) {
            //生成1-100之间的整数为arr2的每个元素赋值
            arr2[i] = r.nextInt(100)+1;
        }
        //将两个数组合并 为一个新的数组
        int[] arr3 = new int[arr.length+arr2.length];

        for (int i = 0; i < arr.length; i++) {
            arr3[i] = arr[i];
        }
        for (int i = 0; i < arr2.length; i++) {
            //这里不太懂  debug看一下
            arr3[i+arr.length] = arr2[i];
        }
        //求最大值
        int max = arr3[0];
        for (int i = 0; i < arr3.length; i++) {
            if (arr3[i]>max){
                max = arr3[i];
            }
        }
        System.out.println("最大值是:"+max);
        //求最小值
        int min = arr3[0];
        for (int i = 0; i < arr3.length; i++) {
            if (arr3[i]<min){
                min = arr3[i];
            }
        }
        System.out.println("最小值是:"+min);
        //求平均值   先求和 再去掉最大值和最小值
        int sum = 0;
        for (int i = 0; i < arr3.length; i++) {
            sum += arr3[i];
        }
        System.out.println("和是:"+ sum);
        //求平均值
        System.out.println("平均值是:"+(sum - max -min)/(arr3.length-2));
    }
}

1.数组元素求平均值

案例需求

随机生成10个1-10之间的数(包括1和10),将生成的数放到数组中,计算数组中索引为奇数的元素平均值,并将结果打印到控制台上

代码实现

package practise.day05;

import java.util.Random;

/*
随机生成10个1-10之间的数(包括1和10),将生成的数放到数组中
计算数组中索引为奇数的元素平均值,并将结果打印到控制台上
 */
public class practice {
    public static void main(String[] args) {
        Random r = new Random();

        int []arr= new int[10];
        int sum = 0;
        int count = 0;
        //将随机生成的数添加到数组中
        for (int i = 0; i < arr.length; i++) {
            int a = r.nextInt(10)+1;
            arr[i] = a;
        }
        for (int i = 0; i < arr.length; i++) {
            if (i % 2 == 1){
                sum +=arr[i];
                count++;
            }
        }
        System.out.println("平均值是"+(sum/count));
    }
}

2. 数组元素求和

  • 案例需求

    有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, ​ 要求是:求和的元素个位和十位都不能是7,并且只能是偶数

  • 思路

    1:定义一个数组,用静态初始化完成数组元素的初始化 2:定义一个求和变量,初始值是0 3:遍历数组,获取到数组中的每一个元素 4:判断该元素是否满足条件,如果满足条件就累加 5:输出求和变量的值

  • 代码实现

  • package practise.day05;
    /*
    有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,
       要求是:求和的元素个位和十位都不能是7,并且只能是偶数
    
        1:定义一个数组,用静态初始化完成数组元素的初始化
        2:定义一个求和变量,初始值是0
        3:遍历数组,获取到数组中的每一个元素
        4:判断该元素是否满足条件,如果满足条件就累加
        5:输出求和变量的值
     */
    public class practice01{
        public static void main(String[] args) {
        int[] arr = {68,27,95,88,171,996,51,210};
        int sum = 0;
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] % 10!=7 && arr[i] /10 % 10 != 7 && arr[i] % 2== 0){
                    sum +=arr[i];
                }
            }
            System.out.println(sum);
        }
    }
    

    3.判断两个数组是否相同

  • 案例需求

      定义一个方法,用于比较两个数组的内容是否相同

    - 思路

      1:定义两个数组,分别使用静态初始化完成数组元素的初始化
      2:定义一个方法,用于比较两个数组的内容是否相同
      3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了
         首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
         其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
         最后循环遍历结束后,返回true

      4:调用方法,用变量接收

      5:输出结果

  • 代码实现

    package practise.day05;
    
    
    
    /*
    - 案例需求
    
      定义一个方法,用于比较两个数组的内容是否相同
    
    - 思路
    
      1:定义两个数组,分别使用静态初始化完成数组元素的初始化
      2:定义一个方法,用于比较两个数组的内容是否相同
      3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了
         首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
         其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
         最后循环遍历结束后,返回true
    
      4:调用方法,用变量接收
    
      5:输出结果
     */
    public class practice02 {
        public static void main(String[] args) {
            //定义两个数组
            int[]arr = {2,3,5,6,8,10,99};
            int[]arr2 = {6,7,8,9,11,22,33,66,88};
            //调用方法
            boolean b = compare(arr,arr2);
            System.out.println(b);
        }
        //定义一个方法 先判断两个数组的长度是否相同  遍历两个数组判断内容是否相同 
        // 如果都相同则返回true
        public static boolean compare(int[]arr,int[]arr2){
            if (arr.length!=arr2.length){
                return false;
            }
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] !=arr2[i]){
                    return false;
                }
            }
            return true;
        }
    
    }
    

 4. 查找元素在数组中出现的索引位置

  • 案例需求

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

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

  • 代码实现

    package practise.day05;
    
    import java.util.Scanner;
    
    /*
    - 案例需求
    
      已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。
    
      并在控制台输出找到的索引值。如果没有查找到,则输出-1
    
    - 代码实现
     */
    public class practice04 {
        public static void main(String[] args) {
            int[] arr = {19, 28, 37, 46, 50};
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数字");
            int a = sc.nextInt();
            method(arr, a);
    
        }
        private static void method(int[]arr,int a){
            int index = 0;
            for (int i = 0; i < arr.length; i++) {
                if (arr[i]==a){
                    System.out.println(i);
                    index ++;
                }
    
            }
            if (index == 0){
                System.out.println(-1);
            }
        }
    }
    

    5. 数组元素反转

  • 案例需求

    已知一个数组 arr = {1, 2, 3, 4, 5}; 用程序实现把数组中的元素值交换, ​ 交换后的数组 arr = {5, 4, 3, 2, 1}; 并在控制台输出交换后的数组元素。

  • 思路

    1:定义一个数组,用静态初始化完成数组元素的初始化 2:循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引 3:变量交换 4:遍历数组

  • 代码实现

    package practise.day05;
    /*
    - 已知一个数组 arr = {1, 2, 3, 4, 5}; 用程序实现把数组中的元素值交换,
        交换后的数组 arr = {5, 4, 3, 2, 1}; 并在控制台输出交换后的数组元素。
    
    - 图解
    
    
    
    
     */
    public class practice05 {
        public static void main(String[] args) {
            //定义一个数组,用静态初始化完成数组元素的初始化
            int []arr = {1,2,3,4,5};
            fanzhuan(arr);
            printArray(arr);
        }
        public static void  fanzhuan(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;
            }
            }
        public static void printArray(int[] arr) {
    //         这是练习提供的方法
    //        System.out.print("[");
    //
    //        for (int x = 0; x < arr.length; x++) {
    //            if (x == arr.length - 1) {
    //                System.out.print(arr[x]);
    //            } else {
    //                System.out.print(arr[x] + ", ");
    //            }
    //        }
    //
    //        System.out.println("]");
            for (int i = 0; i < arr.length; i++) {
                int a = arr[i];
                System.out.print(a+"  ");
            }
        }
        }
    
    

    6. 评委打分

  • 案例需求

    在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 ​ 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

  • 思路

    1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2:键盘录入评委分数 3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进 4:定义方法实现获取数组中的最高分(数组最大值),调用方法 5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法 6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法 7:按照计算规则进行计算得到平均分 8:输出平均分

  • 代码实现

package practise.day05;

import java.util.Scanner;

/*
- 在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
  选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。

- 思路

  1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6
  2:键盘录入评委分数
  3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进
  4:定义方法实现获取数组中的最高分(数组最大值),调用方法
  5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法
  6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法
  7:按照计算规则进行计算得到平均分
  8:输出平均分
 */
public class practice06 {
    public static void main(String[] args) {
        int[] arr = new int[6];
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个评委的打分");
            arr[i] = sc.nextInt();
        }
        printArray( arr);
        System.out.println("最高分是:");
        System.out.println(getMax(arr));
        System.out.print("最低分是");
        System.out.println(getMin(arr));
        System.out.print("总分数是:");
        System.out.println(getSum(arr));
        System.out.println("去掉一个最高分"+getMax(arr)+"去掉一个最低分"+getMin(arr));

        int sum = getSum(arr);
        int min = getMin(arr);
        int max = getMax(arr);
        int pingJunShun = (sum - min -max )/(arr.length-2);
        System.out.println("平均得分是"+pingJunShun);

    }

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

        }
        return min;
    }
    public static int getSum (int[]arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
    //遍历数组  查看分数  不需要返回值  用void
    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.print("]");
    }

}

 案例介绍

随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息。

我们来完成随机点名器,它具备以下3个内容:

1. 存储所有同学姓名
2. 总览全班同学姓名
3. 随机点名其中一人,打印到控制台

 案例需求分析

全班同学中随机的找出一名同学,打印这名同学的个人信息。

我们对本案例进行分析,得出如下分析结果:

1.存储全班同学信息(姓名、年龄)

2.打印全班同学每一个人的信息(姓名、年龄)

3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)

随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。

而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。

 先对学生信息进行封装,新建一个Student类

package practise.day06;

public class Student {
    private String name;
    private int age;


    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}
package practise.day06;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/*
全班同学中随机的找出一名同学,打印这名同学的个人信息。

我们对本案例进行分析,得出如下分析结果:

1.存储全班同学信息(姓名、年龄)

2.打印全班同学每一个人的信息(姓名、年龄)

3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)

随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,
我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。

而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,
则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。
 */
public class practice01 {
    public static void main(String[] args) {
        ArrayList<Student>list = new ArrayList<>();
        addStudent(list);
        show(list);
        randomStudent(list);
    }
    public static void addStudent(ArrayList<Student>list){
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {

            Student s = new Student();
            s.setName(sc.next());
            s.setAge(sc.nextInt());
            list.add(s);
            System.out.println("第"+(i+1)+"个输完了");
        }
    }
    public static void show(ArrayList<Student>list){
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            System.out.println(s.toString());
        }
    }
    public static void randomStudent(ArrayList<Student>list){
        int index = new Random().nextInt(list.size());//这里的定义有点忘了  完了看看视频
        Student s  = list.get(index);
        System.out.println("幸运儿是"+s.toString());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值