GROOVY: как найти ближайшее значение или сопоставить предыдущее значение в массиве [closed]

Как я могу сопоставить значение после чтения из ячейки Excel. Ссылаясь на картинку, прикрепленную к строке Test8, Я ценю 192. После прочтения конкретных значений строки. Мне нужно назначить тип как +1 для значения 192. Если было 191, то это +1. Это как что-то из диапазона 191-203 присвоить +1. Если это 204-210, это +2.

Мой код:

private void evaluateWeights(BBucket bucket, ZWorkbookImpl workbook) 
        {
            //TODO find right row, extract data
        String fileName = "../waage.xls";
try {
            def typusProgram = bucket.gettypusProgram()
            workbook.goToSheet(SHEET_NAME1)
            workbook.goToPosition(0, 0)
            
                        while(true)
                        {
                            if(workbook.readCell(false).contentEquals(typusProgram)) {
                                workbook.goToNextCell()
                                int[] prId = new int[5];
                                def cell1 = workbook.readCell(false)
                                workbook.goToNextCell()
                                def cell2 = workbook.readCell(false)
                                workbook.goToNextCell()
                                def cell3 = workbook.readCell(false)
                                workbook.goToNextCell()
                                def cell4 = workbook.readCell(false)
                                workbook.goToNextCell()
                                def cell5 = workbook.readCell(false)
                                workbook.goToNextCell()
                                def cell6 = workbook.readCell(false)
                                workbook.goToNextCell()
                                
                                logger.info(cell1)
                                logger.info(cell4)
                                
                                int myNumber = 192
                                int distance = Math.abs(numbers[0] - myNumber)
                                int idx = 0
                                for(int c = 1; c < numbers.length; c++){
                                    int cdistance = Math.abs(numbers[c] - myNumber)
                                    if(cdistance < distance){
                                        idx = c
                                        distance = cdistance
                                    }
                                }
                                String theNumber = numbers[idx]

                                bucket.getAll(new FilterAllDomainObjects()).each{e->
                                    e.settypusProgramExtension(theNumber)
                                }
                                break;
                            }
                            workbook.goToNextRow(false)
                        }
    
                    }
                    catch (Exception e)
                    {
                        throw new Exception("Error parsing ${fileName} file", e)
                    }       
            
        }

введите описание изображения здесь

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *