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