Java 综合练习

目录

1 减肥计划

2 逢七过

3 不死神兔

4 百钱白鸡

5 数组元素求和

6 数组内容相同

7 查找

8 反转

9 评委打分


1 减肥计划

通过键盘录入的方式输入星期数(1-7的整数),显示今天的减肥活动,使用switch和if两种判断语句分别完成。(可写成2个方法)
​            周一:跑步
​            周二:游泳
​            周三:慢走
​            周四:动感单车
​            周五:拳击
​            周六:爬山
​            周日:好好吃一顿

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数(1-7的整数):");
        int n = sc.nextInt();  //输入的星期数
        int c = activity2(n);   //调用方法,显示今天的减肥活动
    }

    public static int activity(int n){  //if方法进行判断
        if(n < 1 || n > 7){
            System.out.println("请输入正确的星期数!");
        }else if(n == 1){
            System.out.println("跑步");
        }else if(n == 2){
            System.out.println("游泳");
        }else if(n == 3){
            System.out.println("慢走");
        }else if(n == 4){
            System.out.println("动感单车");
        }else if(n == 5){
            System.out.println("拳击");
        }else if(n == 6){
            System.out.println("爬山");
        }else{
            System.out.println("好好吃一顿");
        }
        return n;
    }

    public static int activity2(int n){   //switch方法
        switch (n){
            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;
            default:
                System.out.println("请输入正确的星期数");
        }
        return n;
    }

2 逢七过

    朋友聚会的时候可能会玩一个游戏:逢七过。
​    规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
​    为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则      的数据。
​    这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。

    public static void main(String[] args) {
        for(int i = 1; i <= 100; i++){     //遍历1-100
            if(i%7 == 0 || i%10 == 7 || i/10%10 ==7){     //包含7或者是7的倍数时(也就是说,个位有7,十位有7,以及是7的倍数时,喊过)
                System.out.println(i);
            }
        }
    }

3 不死神兔

有一个很有名的数学逻辑题叫做不死神兔问题。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

    public static void main(String[] args) {
        int[] a = new int[20];
        a[0] = 1;   //第一个月为1对
        a[1] = 1;   //第二个月为1对
        for(int i = 2; i 

4 百钱白鸡

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
​百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

    public static void main(String[] args) {
        int x;  //鸡翁的只数
        int y;  //鸡母的只数
        int z;  //鸡雏的只数

        for( x = 0; x <= 20; x++){      //鸡翁的只数,一百文最多买20只
            for(y = 0; y <= 33; y++){   //鸡母的只数,一百文最多买33只
                z = 100-x-y;     //鸡雏的只数,是一百只鸡减去鸡翁和鸡母
                if(z%3 == 0 && x*5 + y*3 +z/3 == 100){     //要同时满足,鸡雏的个数是3的倍数,以及三种鸡所购买的钱相加为100
                    System.out.println(x + " " + y + " " + z);
                }
            }
        }
    }

5 数组元素求和

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

    public static void main(String[] args) {
        int[] a = {68,27,95,88,171,996,51,210};
        int sum = 0;

        for(int i = 0; i < a.length; i++){
            if(a[i]%10 != 7 && a[i]/10%10 != 7 && a[i]%2 == 0){  //元素个位和十位都不能是7(个:a[i]%10, 十:a[i]/10%10)
                System.out.println(a[i]);
                sum += a[i];
            }
        }
        System.out.println("元素和为:" + sum);
    }

6 数组内容相同

设计一个方法,用于比较两个数组的内容是否相同。

    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        int[] b = {1,2,3,4,5};

        boolean flag = equals(a,b);    //调用方法
        System.out.println(flag);
    }

    public static boolean equals(int[] a, int[] b){   //判断是否相等,选用boolean作为返回值,两个数组作为参数
        if(a.length != b.length){    //判断长度是否一致
            return false;
        }

        for(int i = 0; i < a.length; i++){   //前面以及判断长度,故程序运行到这里,两个数组的长度是相同的,所以任意取一长度
            if (a[i] != b[i]){    //判断相对应的值是否相等,不等返回false
                return false;
            }
        }

        return true;   //返回true
    }

7 查找

已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据。定义一个方法,完成查找该数据在数组中的索引,并在控制台输出找到的索引值。

    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要查找的值:");
        int n = sc.nextInt();
        int index = getIndex(arr,n);
        System.out.println(index);
    }

    public static int getIndex(int[] a, int n){
        int index = -1;   //初始化一个下标变量
        for(int i = 0; i < a.length; i++){   //遍历数组
            if(a[i] == n){  //判断,如果数组有,就把下标值赋值给index
                index = i;
                break;   //找到后就结束循环
            }
        }
        return index;   //返回index
    }

8 反转

已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值反转(在原数组中操作,不能定义第二个数组),反转后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出反转后的数组元素。

    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        System.out.println("反转前");
        System.out.println(Arrays.toString(arr));
        reversal(arr);
        System.out.println("反转后");
        System.out.println(Arrays.toString(arr));
    }

    public static void reversal(int[] arr){
        for(int start = 0, end = arr.length-1; start <= end; start++,end--){  //最后一个和第一个交换,倒数第二个和第二个交换,指导start<=end
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }

9 评委打分

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

    public static void main(String[] args) {
        int[] a = new int[6];
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < a.length; i++){
            System.out.println("请输入第" + (i+1) + "位评委所打成绩:");
            a[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(a));

        int max = getMax(a);
        int min = getMin(a);
        int sum = getSum(a);
        int avg = (sum - max - min)/(a.length-2);
        System.out.println("平均分为:" + avg);
    }

    public static int getMax(int[] a){  //获取最大值
        int max = a[0];
        for (int i = 0; i < a.length; i++) {
            if(max < a[i]){
                max = a[i];
            }
        }
        return max;
    }

    public static int getMin(int[] a){   //获取最小值
        int min = a[0];
        for (int i = 0; i < a.length; i++) {
            if(min > a[i]){
                min = a[i];
            }
        }
        return min;
    }

    public static int getSum(int[] a){  //获取元素和
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        return sum;
    }

你可能感兴趣的:(练习题,java,jvm,开发语言)