Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为数组中的索引赋值_Java_Arrays_Groovy - Fatal编程技术网

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