Java实例1

问题描述

使用函数完成以下功能,并得到一个完整的可以运行的程序:

1)定义两个数组,用来表示下列关系表:

水位 库容

112 5656

115 5954

113 5703

110 5500

111 5642

114 5841

2)将两个数组分别按从小到大排序

3)输入任意一个水位,计算对应库容

4)输入任意库容,计算水位

(注:使用插值法计算,比如水位输入112.6,首先查询到112和113米水位

对应的库容5656和5703,然后计算比例=112.6-112=0.6,最后结果就是0.6 * (5703-5656) + 5656)

代码实现

package JavaMiddleTest;//包名(可修改)
public class QuestionTwo {
    public static void main(String[] args) {
        //1.数组表示信息
        double[] waterHeight = {112, 115, 113, 110, 111, 114};
        double[] calculate = {5656, 5954, 5703, 5500, 5642, 5841};
        //2.分别排序
        sort(waterHeight); //水位
        sort(calculate); //库容
        for (int i = 0; i < waterHeight.length; i++) {
            System.out.print(waterHeight[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < calculate.length; i++) {
            System.out.print(calculate[i] + " ");
        }
        System.out.println();
        //3.计算水位对应的库容
        System.out.println("库容为:" + calculateDiffValue(113.6,waterHeight,calculate));
        //4.计算库容对应的水位
        System.out.println("水位为:" + waterHeightDiffValue(5710,waterHeight,calculate));
    }

    //2.两个数组分别按 从小到大 排序
    public static double[] sort(double[] array) {
        double temp = 0;
        //冒泡排序
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] >= array[j + 1]) {
                    temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }

    //方法3-水位对应的库容
    //索引查找输入的水位下界水位值,返回下界水位在数组中的下标
    public static int findIndex(double value,double[] source){
        for (int i = 0;i < source.length; i++) {
            if(value < source[i]){
                return i-1;
            }
        }
        return -1; //超出
    }
    //插值法-计算库容
    public static double calculateDiffValue(double value,double[] waterHeight,double[] calculate) {
        //value输入的水位值
        //waterHeight水位数组
        //calculate库容数组
        int index = findIndex(value,waterHeight); //查找输入的水位的下界水位在数组中的下标
        return ((value - waterHeight[index]) / (waterHeight[index+1] - waterHeight[index]))* (calculate[index+1] - calculate[index]) + calculate[index];

    }

    //方法4-输入任意库容,计算水位
    //插值法-计算水位
    public static double waterHeightDiffValue(double value,double[] waterHeight, double[] calculate){
        //索引查找输入的库容下界库容值,返回下界库容在数组中的下标
        int index = findIndex(value,calculate);
        return (value - calculate[index]) / (calculate[index+1] - calculate[index]) * (waterHeight[index+1] - waterHeight[index]) + waterHeight[index];
        
    }
}

运行结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等日出看彩虹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值