Java 为数组中的索引赋值
我有一个包含整数的数组Java 为数组中的索引赋值,java,arrays,groovy,Java,Arrays,Groovy,我有一个包含整数的数组 int[] cells= new int[6] cells[0] = 0 cells[1] = 0 cells[2] = 215 cells[3] = 230 cells[4] = 243 cells[5] = 252 我正在尝试检查此数组中的另一个数字,并将其指定给它所属的索引。例如:如果我使用的是243号,我想要243号中的4号单元格。这在我下面的代码中运行得非常好,如果我的号码是220,它将分配给215。但
int[] cells= new int[6]
cells[0] = 0
cells[1] = 0
cells[2] = 215
cells[3] = 230
cells[4] = 243
cells[5] = 252
我正在尝试检查此数组中的另一个数字,并将其指定给它所属的索引。例如:如果我使用的是243号,我想要243号中的4号单元格。这在我下面的代码中运行得非常好,如果我的号码是220,它将分配给215。但问题是,如果我的号码是225,它就分配给230。在寻找最接近的方面也是正确的。但我想把225分为215(索引#2),而不是230。仅当数字为230或在230-242范围内时,才应分配。获得它的最佳方式是什么。请帮忙
我的代码是:
def mynumber = 225
int distance = Math.abs(cells[0] - mynumber )
int idx = 0
for(int c = 1; c < cells.length; c++)
{
int cdistance = Math.abs(cells[c] - mynumber )
if(cdistance < distance)
{
idx = c
distance = cdistance
}
}
int choosennumber= cells[idx]
def mynumber=225
int distance=Math.abs(单元格[0]-mynumber)
int idx=0
for(int c=1;c
您希望mynumber
为>=数组当前索引中的数字:
int distance = mynumber - cells[0];
int idx = 0;
for(int c = 1; c < cells.length; c++) {
if (mynumber >= cells[c]) {
int cdistance = mynumber - cells[c];
if (cdistance < distance) {
idx = c;
distance = cdistance;
}
}
}
int choosennumber = cells[idx];
int-distance=mynumber-cells[0];
int-idx=0;
for(int c=1;c=单元格[c]){
int cdistance=mynumber-细胞[c];
if(距离<距离){
idx=c;
距离=距离;
}
}
}
int choosennumber=单元格[idx];
这是假设
mynumber>=单元格[0]
您希望mynumber
为>=数组当前索引中的数字:
int distance = mynumber - cells[0];
int idx = 0;
for(int c = 1; c < cells.length; c++) {
if (mynumber >= cells[c]) {
int cdistance = mynumber - cells[c];
if (cdistance < distance) {
idx = c;
distance = cdistance;
}
}
}
int choosennumber = cells[idx];
int-distance=mynumber-cells[0];
int-idx=0;
for(int c=1;c=单元格[c]){
int cdistance=mynumber-细胞[c];
if(距离<距离){
idx=c;
距离=距离;
}
}
}
int choosennumber=单元格[idx];
这是假设
mynumber>=单元格[0]
不使用Math.abs;获取两个数字之间的差值并保持正值,这样您将找到215而不是230
int distance = cells[0] - mynumber
及
不要使用Math.abs;获取两个数字之间的差值并保持正值,这样您将找到215而不是230
int distance = cells[0] - mynumber
及
您可以使用Groovy提供的
min/max
函数
收藏。你基本上想要的是列表中最大的数字
小于您的限制
def findLimit(list, limit) {
list.max{ it <= limit ? it : -it }
}
def cells = [ 242, 215, 230, 243, 252, 244]
assert 215 == findLimit(cells, 10)
assert 215 == findLimit(cells, 225)
assert 243 == findLimit(cells, 243)
assert 252 == findLimit(cells, 1000)
def findLimit(列表,限制){
max{it您可以使用Groovy为您带来的min/max
函数
你基本上是想从你的列表中找出最大的数字
小于您的限制
def findLimit(list, limit) {
list.max{ it <= limit ? it : -it }
}
def cells = [ 242, 215, 230, 243, 252, 244]
assert 215 == findLimit(cells, 10)
assert 215 == findLimit(cells, 225)
assert 243 == findLimit(cells, 243)
assert 252 == findLimit(cells, 1000)
def findLimit(列表,限制){
list.max{it