Java练习题6

第二题:分析以下需求并实现
(1)定义方法public static boolean isSym(int[] arr),判断数组中的元素值是否对称,对称返回true,不对称返回false;
(2)在main方法中,定义一个数组,并调用方法。
(3)打印结果:[1,2,3,4,3,2,1]是否对称:true

public class Test1 {
     
    public static void main(String[] args) {
     
        int[] arr = {
     1, 2, 3, 4, 3, 2, 1};
        //打印数组
        printArr(arr);
//        调用方法验证数组是否对称
        boolean duicheng = isSym(arr);
        System.out.println("是否对称:" + duicheng);
    }

    //验证数组是否对称
    public static boolean isSym(int[] arr) {
     
        for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
     
            if (arr[start] != arr[end]) {
     
                //只要有不相等的 就是不对称 
                return false;
            }
        }
        //for循环结束以后 要是没有不相等的 那就是对称的
        return true;
    }

    //打印数组
    public static void printArr(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("]");
    }
}

第三题:分析以下需求并实现
(1)定义一个长度为6的int类型数组,元素值使用随机数生成(范围为50-80)
(2)求出该数组中满足要求的元素和。
要求:求和的元素的个位和十位不能包含7,并且只能为偶数。

public class Test2 {
     
    public static void main(String[] args) {
     
        //动态生成数组
        int[] arr = new int[6];
        //创建随机数对象
        Random r = new Random();
        //调用方法 使用随机数把生成的随机数加入到数组中
        addArr(r, arr);
        //调用方法,求满足要求的元素的和
        int sum = sum_arr(arr);
        System.out.println("该数组中满足要求的元素的和为:" + sum);
    }

    public static void addArr(Random r, int[] arr) {
     
        for (int i = 0; i < arr.length; i++) {
     
            arr[i] = r.nextInt(31) + 50;
//            System.out.println(arr[i]);
        }
    }

    public static int sum_arr(int[] arr) {
     
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
     
            int ge = arr[i] % 10;
            int shi = arr[i] / 10;
            if (ge != 7 && shi != 7 && arr[i] % 2 == 0) {
     
                //如果满足条件 就计算sum
                sum += arr[i];
            } else {
     
                //如果不满足,那就直接跳过本次循环,进行下一次循环
                continue;
            }
        }
        //最终把sum返回
        return sum;
    }
}

/第四题:分析以下需求并实现
(1) 定义方法public static int getCount(int[] arr,int num),求出指定元素在数组中出现的次数.
(2)定义方法public static int getAllCount(int[] arr),统计数组中出现次数为1的元素一共有多少个。
(推荐-遍历数组,然后调用第一个方法,求出数组中每个元素在数组中出现的次数,如果只出现了一次,就统计)
(3) 在main方法中定义数组,如int arr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};。然后调用getAllCount方法,统计只出现一次的元素有多少个。
打印结果:数组中只出现一次的元素有2个
/

public class Test3 {
     
    public static void main(String[] args) {
     
        int arr[] = {
     1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字用来查询:");
        int num = sc.nextInt();
        int cout = getCount(arr, num);
        System.out.println(num + "在arr数组中出现了" + cout + "次");

        int count_all = getAllCount(arr);
//        System.out.printf("数组中只出现一次的元素有%d个", count_all);
        //这两个打印效果一样,上面是格式化打印,作为了解
        System.out.println("数组中只出现一次的元素有" + count_all + "个");
    }

    public static int getCount(int[] arr, int num) {
     
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
     
            if (arr[i] == num) {
     
                //每次满足相等 就计数一次
                count++;
            }
        }
        return count;
    }

    public static int getAllCount(int[] arr) {
     
        //定义变量,用来记录只出现过一次的元素的数量
        int count_all = 0;
        for (int i = 0; i < arr.length; i++) {
     
            //调用getCount方法,依次确认每个元素出现的次数
            int count = getCount(arr, arr[i]);
            //判断如果只出现一次,那就计数
            if (count == 1) {
     
                count_all++;
            } else {
     
                //如果不是出现一次,那就直接跳过本次循环
                continue;
            }
        }
        //返回只出现过一次的元素的数量
        return count_all;
    }
}

你可能感兴趣的:(Java练习题基础版)