java - 如何防止程序删除方法中的最后一个索引

标签 java arrays indexing return

我创建了一个方法,它将获取前一个数组的前两个值并将它们加在一起并重复此操作,直到创建了一个包含添加值的新数组。但是,我想添加一条规则,如果前一个数组的最后一个数字是奇数,我不希望添加该数字。我能够在某种程度上做到这一点,但不幸的是,代价是删除索引的倒数第二个值。例如,我的 {1, 4, 6, 8, 3, 4, 6, 7, 10, 1} 数组正在打印 [5,14,7,13,1],而我得到了最后一个数字,但我仍然希望 10存在,但我对如何在不删除 10 的情况下让代码工作感到困惑。

import java.util.*;
import java.io.*;
public class reduceNumbers{
     public static int[] reduce(int[] numArray){
         int[] returnedArray = new int[(numArray.length) / 2]; 
         if(returnedArray[returnedArray.length - 1] % 2 == 1){
         for(int i = 0; i < returnedArray.length; i++) { 


         returnedArray[i] = numArray[2 * i] + numArray[2 * i + 1]; 
    }

}
else{
  for(int i = 0; i < returnedArray.length - 1; i++) { 


    returnedArray[i] = numArray[2 * i] + numArray[2 * i + 1]; 
}

returnedArray[returnedArray.length - 1] = numArray[numArray.length - 1];


}



return returnedArray;
}     

public static void main(String[] args){

int[] firstArray = {1, 4, 6, 8, 3, 4, 6, 7, 10, 1};

   int[] firstArrayA, 

   firstArrayA= reduce(firstArray);


       System.out.println(Arrays.toString(firstArrayA) );


   }
}

最佳答案

这是你想要的吗?

import java.util.*;
import java.io.*;
public class reduceNumbers{
    public static int[] reduce(int[] numArray){
        boolean even = numArray.length % 2 == 0;
        if(even) {
            int[] returnedArray = new int[numArray.length / 2];
            for(int i=0;i<returnedArray.length;i++) {
                returnedArray[i] = numArray[i * 2]  + numArray[i * 2 + 1];
            }
            return returnedArray;
        }
        else{
            int[] returnedArray = new int[(numArray.length + 1) / 2];
            for(int i = 0; i < returnedArray.length - 1; i++) {
                returnedArray[i] = numArray[i * 2] + numArray[i * 2 + 1];
            }
            returnedArray[returnedArray.length - 1] = numArray[numArray.length - 1];
            return returnedArray;
        }
    }

    public static void main(String[] args){
        int[] firstArray = {1, 4, 6, 8, 3, 4, 6, 7, 10, 1};
        int[] firstArrayA = reduce(firstArray);
        System.out.println(Arrays.toString(firstArrayA) );
    }
}

我重构了您的代码,只为每种情况分配 returnedArray,而不是在检查奇偶校验之前分配它。

关于java - 如何防止程序删除方法中的最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62164468/

相关文章:

MATLAB 索引问题

java - 分割字符串并存储在 HashMap Java 8 中的模式

java - Swing:使表格中的特定单元格闪烁的计算效率最高的方法

c - 如何动态分配一个二维指针数组? (C)

c++ - 为什么我不能删除这个数组元素的指针值?

arrays - PostgreSQL 索引 JSONB 数组

java - 翻译 LOC

java - 正在将图像上传到服务器(服务器上的图像已损坏)

jquery - 如果 x=true,则将项目移动到 <cfloop> 中的第一个数组位置

indexing - 应用 IF 而不是 MATCH 时如何使用 INDEX?