ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java基础的6个实训

2022-02-04 18:04:52  阅读:151  来源: 互联网

标签:arr java int rabbitNum 基础 length 实训 数组 public


java基础的6个实训

不死神兔

需求:

  • 有一对兔子,
  • 从出生后第3个月起每个月都生一对兔子,
  • 小兔子长到第三个月后每个月又生一对兔子,
  • 假如兔子都不死,问第二十个月的兔子对数为多少?

思路:

  1. 定义一个数组存储兔子对数
  2. 第一月、第二月都是已知,都是1,
  3. 找到规律用循环实现计算

代码:

public class Demo1 {
    public static void main(String[] args) {
        // 定义一个数组存储兔子对数
        int[] rabbitNum = new int[20];
        // 第一月、第二月都是已知,都是1
        rabbitNum[0] = 1;
        rabbitNum[1] = 1;

        /*
         * 思路:
         * rabbitNum[2] = rabbitNum[0]+rabbitNum[1];
         * rabbitNum[3] = rabbitNum[1]+rabbitNum[2];
         * rabbitNum[4] = rabbitNum[2]+rabbitNum[3];
         * ……
         * 第20月
         * rabbitNum[19] = rabbitNum[17]+rabbitNum[18];
         * */

        // 找到规律用循环实现计算
        for (int i = 2; i < rabbitNum.length; i++) {
            rabbitNum[i] = rabbitNum[i - 2] + rabbitNum[i - 1];
            // 检验
            System.out.println("第"+ (i + 1) +"月,兔子有"+ rabbitNum[i] +"只");
        }

    }
}

百钱百鸡

需求:

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

问题:

  • 公鸡一只5元,母鸡一只3元,雏鸡3只1元,
  • 一共花了100元买了100只,
  • 买了各几只

思路:

  • 假设公鸡x只,母鸡y只,雏鸡z只,
  • 一共100只
  • 满足x+y+z = 100;
  • 一共100元
  • 5x + 3y + z/3 = 100;

代码:

public class Demo2 {
    public static void main(String[] args) {
        /*
         * 由100元和100只得出:
         * 0 <= x <= 20
         * 0 <= y <= 33
         * 0 <= z <= 100
         * */

        for (int x = 0; x <= 20; x++) {
            for (int y = 0; y <= 33; y++) {
                int z = 100 - (x + y);
                // 判断小鸡数量为3的倍数并且钱数相加为100的情况
                if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {
                    System.out.println("成立的只数:x:" + x + ",y:" + y + ",z:" + z);
                    System.out.println("-------------------------------------");
                }
            }
        }
    }
}

判断两个数组内容是否相同

代码:

public class Demo3 {
    public static void main(String[] args) {
        // 定义两个数组
        int[] nums1 = {1, 2, 3};
        int[] nums2 = {1, 2, 3};

        // 利用匿名实例化对象并调用方法的返回值进行判断
        if (new Demo3().compare(nums1, nums2)) {
            System.out.println("两个数组相同");
        } else {
            System.out.println("两个数组不相同");
        }
    }

    // 判断方法
    // 返回为boolean值,参数为需要比较的数组
    public boolean compare(int[] nums1, int[] nums2) {
        // 养成好习惯,返回布尔值时定义一个布尔值,初始化为true,用于返回
        boolean flag = true;
        // 判断两个数组的长度是否相同
        if (nums1.length == nums2.length) {
            // 判断数组内元素是否相等
            for (int i = 0; i < nums1.length; i++) {
                // 如果相同时返回true
                if (nums1[i] != nums2[i]){
                    flag = false;
                }
            }
        } else {
            flag = false;
        }

        return flag;
    }
}

查找

需求:

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

代码:

import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        // 打印匿名实例化对象并调用find()的返回值
        System.out.println(new Demo4().findIndex());
    }

    public int findIndex() {
        // 定义一个数组
        int[] arr = {19, 28, 37, 46, 50};
        // 定义一个索引值,默认为-1,用于返回
        int index = -1;

        System.out.println("请输入一个数:");
        // 实例化一个扫描器
        Scanner scanner = new Scanner(System.in);
        int input = scanner.nextInt();

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == input) {
                index = i;
            }
        }
		// 关闭资源
        scanner.close();
        return index;
    }
}

反转数组

代码:

import java.util.Arrays;

public class Demo5 {
    public static void main(String[] args) {
        // 定义一个需要反转的数组
        int[] arr = {19, 28, 37, 46, 50};

        // 打印匿名实例化对象并调用reverse()的返回值
        System.out.println(Arrays.toString(new Demo5().reverse(arr)));
    }

    public int[] reverse(int[] arr) {
        // 定义一个反转后的数组,长度为反转前的数组
        int[] newArray = new int[arr.length];

        for (int i = 0; i < arr.length; i++) {
            // 将旧数组从后向前赋给新数组
            newArray [i] = arr[arr.length - 1 - i];
        }

        // 返回新数组
        return newArray;
    }
}

评委打分

需求:

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

代码:

import java.util.Scanner;

public class Demo6 {
    public static void main(String[] args) {
        // 定义一个长度为6的数组
        int[] arr = new int[6];
        // 调用getArray()进行获取数值
        arr = new Demo6().getArray(arr);

        // 调用getScore()并打印返回值
        System.out.println(new Demo6().getScore(arr));

    }

    // 键盘录入方法
    public int[] getArray(int[] arr) {
        System.out.println("请输入6位评委的分数");
        // 实例化扫描器扫描输入
        Scanner scanner = new Scanner(System.in);
        // 用循环接收数据并赋值给数组
        for (int i = 0; i < arr.length; i++) {
            arr[i] = scanner.nextInt();
        }
        // 关闭资源
        scanner.close();
        return arr;
    }

    // 算分方法
    public int getScore(int[] arr) {
        // 在数组中找出最大值和最小值
        // 定义一个最大值
        int max = arr[0];
        // 定义一个最小值
        int min = arr[0];
        // 定义一个求和
        int sum = arr[0];

        // 遍历判断
        for (int i = 1; i < arr.length; i++) {
            // 使用Math类中的max()和min()
            max = Math.max(max, arr[i]);
            min = Math.min(min, arr[i]);
            sum += arr[i];
        }
        // 去掉最大值和最小值
        sum -= (max + min);
        // 返回和的平均值
        return sum / (arr.length - 2);
    }
}

标签:arr,java,int,rabbitNum,基础,length,实训,数组,public
来源: https://www.cnblogs.com/coderDreams/p/15863121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有