Java 根据另一个数组确定数组值

Java 根据另一个数组确定数组值,java,Java,我目前正在做我的一项任务,并且正在寻找一些关于我的一个函数的逻辑方面的帮助 首先我有一个要分类的数字数组,然后是一个数字间隔,这个数字决定了每个被绘制的数字进入数组的位置2 即 int区间=2; for(int i=0;i0)和&(数组1[i]2)和&(数组1[i] 正如你开始看到的那样,这个问题是我需要继续寻找一个无限的数字范围。所以我的问题是,实现这个目标的一个更简单的方法是什么?或者已经有一个我可以利用的库了吗 如果我没有说清楚,我很抱歉,如果没有给我代码,我也会更喜欢。如果有人能告诉我

我目前正在做我的一项任务,并且正在寻找一些关于我的一个函数的逻辑方面的帮助

首先我有一个要分类的数字数组,然后是一个数字间隔,这个数字决定了每个被绘制的数字进入数组的位置2

int区间=2;
for(int i=0;i0)和&(数组1[i]<区间)){
阵列2[0]++;
}
}
但是,数组1中的数字是3。然后,我需要另一个类似这样的if声明:

...
}else if((array1[i] > 2) && (array1[i] < interval * 2)) {
    array2[1]++;
}else if((array1[i] > 
。。。
}else if((数组1[i]>2)和&(数组1[i]
正如你开始看到的那样,这个问题是我需要继续寻找一个无限的数字范围。所以我的问题是,实现这个目标的一个更简单的方法是什么?或者已经有一个我可以利用的库了吗

如果我没有说清楚,我很抱歉,如果没有给我代码,我也会更喜欢。如果有人能告诉我一个更有效的方法,我将不胜感激,提前谢谢

编辑:

假设间隔设置为2,并且array1中的数字介于0和10之间,我需要创建一个代码来执行以下操作:

2 < numFromArray1 > 0 == array2[0]++
4 < numFromArray1 > 2 == array2[1]++
6 < numFromArray1 > 4 == array2[2]++
8 < numFromArray1 > 6 == array2[3]++
10 < numFromArray1 > 8 == array2[4]++
20==array2[0]++
42==array2[1]++
64==array2[2]++
86==array2[3]++
108==array2[4]++

但是,数组1中的数字可以是正数或负数、整数或小数。

我不确定您到底想做什么,但从您的代码片段中,我可以为循环找到以下内部

//OUTDATED CODE - please see code block in EDIT below
//for(int i = 0; i < array1.length; i++) {
//    for (int j = 0; j < 100000; j++) { //or Integer.MAXVALUE or whatever
//        if ((array1[i] > (j*2)) && (array1[i] < interval * ((j*2)==0?2:(j*2)) )) {
//            array2[j]++;
//        }
//    }
//}
//过时的代码-请参见下面编辑中的代码块
//for(int i=0;i(j*2))&((数组1[i]
编辑:由于您最近的编辑,这更合适,您不必运行内部循环!:

  • 循环通过阵列1
  • 对于array1中的每个元素,通过计算元素/间隔的下限来查找array2索引
  • 在找到的索引处向array2元素添加1
  • 不要看下面的代码=)

    for(int i=0;i
    使用嵌套循环。很明显,间隔的可能性不是无限多,因为array2有一个固定的大小。所以,如果你循环遍历array2中的所有单元格,然后做一些数学运算,找出你需要的条件。。。我不会给出完整的代码(您要求我不要给出,但它看起来像:

    for ( ... ) {
        for ( ... ) { 
            if (array1[i] > /* do some math here */ && ... ) {
                array2[/* figure out what this should be too */]++;
            }
        }
     }
    
    if ( array1[i] < interval * (interval - 2) ) {
        array2[interval-2]++;
    }
    
    希望你能从中找到答案

    顺便说一下,如果不需要为ARRAY2使用一个数组,请考虑学习一个可以根据需要增长的数据结构<代码> LIKEDLIST/COD>。


    假设我正确理解了问题,并且间隔为3,则0、1和2的出现将增加数组2[0],3、4和5的出现将增加数组2[1],依此类推,这将是一个解决方案:

    编辑很抱歉,您不想看到代码。如果您愿意,我可以重新发布代码。请考虑一种非常简单的方法来确定数字将属于哪个类别。我将尝试给出提示。

    间隔=3;
    0,1,2->0类
    3,4,5->1类
    6,7,8->2类

    一旦知道了类别,就很容易在array2中增加所需的数字

    看起来是这样的:

    for(int i = 0; i < array1.length; i++) {
        int category = // determine category here
        // increase correct position of array2
    }
    
    for(int i=0;i
    经过讨论后,我的代码如下:

    for(int i = 0; i < array1.length; i++) {
        int category = array1[i] / interval;
        array2[category]++;
    }
    
    for(int i=0;i

    我的解决方案不适用于负数。此外,它没有指定如何处理负数

    关系和模式很难理解。我试图解释您想要的:

    比如说:

    for ( ... ) {
        for ( ... ) { 
            if (array1[i] > /* do some math here */ && ... ) {
                array2[/* figure out what this should be too */]++;
            }
        }
     }
    
    if ( array1[i] < interval * (interval - 2) ) {
        array2[interval-2]++;
    }
    
    if(数组1[i]<代码> > P> <强>下面是您可以考虑的所有情况:-< /强> 

    • 首先找出数组中的最大值是什么:-
      array1

    • 您的范围应为
      0到MaxValueInArray 1

    • 然后在外部for循环中,您可以有另一个,它将从
      0
      运行到
      (最大值)/2
      。因为您不想在
      间隔中检查
      最大值*2

    • 然后,对于每个值,您可以检查范围,如果它在该范围内,请使用
      array2[j]

    例如:-

    for (...) // Outer loop {
        for (int j = 0; j <= maximumValueinArray1 / 2; j++) {
            // Make a range for each `j`
            // use the `array2[j]` to put value in appropriate range.
        }
    }
    

    因此,尝试将这些条件与我发布的内部循环关联起来,您的问题就会得到解决。

    您的数字可以有多大。而且您正在失去条件:-
    数组1[I]==interval
    。我不明白这个问题。你能发布一个更详细的解释吗?给出一个运行示例吗?还有,“数字”是什么?我要说的是:array1=要分类的数字集数字=3将是从array1中提取的随机数。在这里似乎很难实现。但这是可能的。@user1327636您需要进行t模式清晰。从你的两个案例来看,模式非常模糊。可以是算术级数、几何级数或e
      0 * interval ----- (1 * interval)  --> in `array2[0]` (0 to 2)
      1 * interval ----- (2 * interval)  --> in `array2[1]` (2 to 4)
      2 * interval ----- (3 * interval)  --> in `array2[2]` (4 to 6)
    
    and so on.
    
     ((max / 2) - 1) * interval ----- (max / 2) * interval  (`max - 2` to max)