首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从java中的二维数组中减去整数值

如何从java中的二维数组中减去整数值
EN

Stack Overflow用户
提问于 2015-01-14 04:40:52
回答 3查看 2.3K关注 0票数 0

我有一个二维数组int arr[][] = new int[47][1];,它保存了从Resultset到arr[i][j] = rs.getInt(2);.Now的值,我想从得到的所有行中减去10,20,30到220,然后取接近10,20到220 .How的行从二维数组中减去这些整数值?

编辑1

我通过sql查询获得以下示例表

通过--我正在检索beam_current.As --您可以从表中看到,有多个rowS,其中beam_current的值接近10、20、30,这是我想要的确切的problem.What,它对应于每个beam_current值,它们最接近10,20,直到220.I不知道如何通过sql查询解析它,所以我是通过编码来实现的。

EN

回答 3

Stack Overflow用户

发布于 2015-01-14 04:46:30

下面是一个解决问题的工作示例。

首先,您必须读取数据库中的所有值并将它们写入float[] (因为您的值是浮动的)。

然后,用值调用此方法。

代码语言:javascript
运行
复制
public static Map<Integer, Float> getClosestValues(float[] databaseValues) {
    // We will store the results in this map
    Map<Integer, Float> results = new LinkedHashMap<>();

    // For each number in 10, 20, 30...210, we are going to look for the closest number
    for (int number = 10; number <= 210; number += 10) {
        float closest = getClosest(databaseValues, number)

        // We have our closest value. Let's store it in the map.
        results.put(number, closest);
    }

    // It's done!
    float closestTo10 = results.get(10);
    float closestTo20 = results.get(20);
    float closestTo30 = results.get(30);
    // ...
    float closestTo210 = results.get(210);

    return results;
}

private static float getClosest(float[] databaseValues, int number) {
    float closest = databaseValues[0]; // Init the max with the first value
    float closestDistance = Math.abs(number - closest);

    for (float currentValue : databaseValues) {
        float currentDistance = Math.abs(number - currentValue);
        if (closestDistance > currentDistance) {
            // We have a shortest distance! Let's update the max
            closest = currentValue;
            closestDistance = currentDistance;
        }
    }

    return closest;
}

这绝对是,既不是优化的,也不是设计良好的,但是我详细介绍了每个步骤,以便您能够理解这个过程。

  • 您在number上迭代,它表示引用数字。
  • 对于每个值,您都从数据库值中获得最接近的值。

若要获取给定数字的最近值,请执行以下操作:

  • 插入最接近第一个值的
  • 对于每一个新的值,如果它与数字的距离是最短的,那么它是目前最短的。
  • 当您遍历所有值时,您的值最接近!

这就是你要找的东西吗?

票数 1
EN

Stack Overflow用户

发布于 2015-01-14 04:53:49

对于一维数组,使用最详细的语法:

代码语言:javascript
运行
复制
int arr[] = new int[47];
int number = 10;
int i = 0;

while (i < arr.length && number <= 220) {
    arr[i] = arr[i] - number;
    number = number + 10;
    i = i + 1
}

如果你有其他的想法,请澄清你的要求。

票数 1
EN

Stack Overflow用户

发布于 2015-01-14 05:13:38

请检查下面的代码是否给出了预期的输出

代码语言:javascript
运行
复制
public static  void calculate(){
    int arr[] = new int[47];
    int number = 10;
    int sum =0;
    int i=1;
    while(number <=220){
        sum = sum+number;
        number += 10*i;
    }

    i=-1;
    while (++i < arr.length ) {
        arr[i] = arr[i] - sum; 
    }
}

我的理解是你必须减去10然后20然后30 .从每一行值到220。

如果这不是要求,那么正如我在评论中所要求的,请提供样本数据和预期输出。

MYSQL中的替代解决方案

或者,根据我的评论和SRV_JAVA的回复。我将借助SQL查询在MYSQL中提出解决方案。

代码语言:javascript
运行
复制
select * from <TableName >where 
mod(beam_current,10.0 ) >= 9.97 or mod(beam_current,10.0 )<= 0.03 

希望这能解决这个问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27935993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档