如何用偶数索引上的反向元素和奇数索引上的总和创建新数组

时间:2019-04-16 16:48:29

标签: java

我的arrayA包含20个随机元素,范围为1000。

  ArrayA = [133,456,234,512,632,532,234...20];

我需要创建新的ArrayB,他需要看起来像这样:

 ArrayB = [331(reversed),15(sum of digits),432(reversed),8(sum ofdigits)];

我试图仅使用方法(用于循环等)而不使用列表来实现它

我现在的主要问题是我不知道如何对偶数索引上的元素的位数求和,以及如何为数组的奇数索引上的反转数创建方法。

    Random random = new Random();

    int arrayA[] = new int[20];
    for (int i = 0; i < arrayA.length; i++) {
        arrayA[i] = random.nextInt(1000);
    }
    System.out.println("Array A: " + Arrays.toString(arrayA));

    int arrayB[] = new int[arrayA.length];

    int sum = 0;
    for (int i = 0; i < arrayA.length; i++) {
        if (i % 2 == 0) {
            sum = sum + i % 10;
            i = i / 10;
            System.out.println(i);
        }

    }

}
}

所以再次:我需要将奇数索引上的数字反转并将它们放在同一索引中的ArrayB中,并且我需要对偶数索引上的元素的数字求和并将它们放入ArrayB中。 Ofc,示例是我的首要问题!

3 个答案:

答案 0 :(得分:4)

部分解决方案。

import java.util.Arrays;
import java.util.Random;

public class ArrayTst {
    public static void main(String[] args) {
        Random random = new Random();
        int arrayA[] = new int[20];
        for (int i = 0; i < arrayA.length; i++) {
            arrayA[i] = random.nextInt(1000);
        }
        System.out.println("Array A: " + Arrays.toString(arrayA));
        int arrayB[] = new int[arrayA.length];
        for (int i = 0; i < arrayA.length; i++) {
            if (i % 2 == 0) {
                arrayB[i] = sumDigits(arrayA[i]);
            }
            else {
                arrayB[i] = reverseInt(arrayA[i]);
            }
        }
    }

    private static int reverseInt(int input) {
        // TODO: Complete
    }

    private static int sumDigits(int num) {
        // TODO: Complete
    }
}

基本上遍历arrayA。如果索引为偶数,则调用方法sumDigits并传递arrayA中的元素,并将方法返回值存储在arrayB中的同一索引元素中。如果索引为奇数,则调用方法reverseInt,再次将元素从arrayA传递到该方法,并将该方法的返回值存储在arrayB中。

关于方法reverseIntsumDigits(如注释中所述),已经有关于如何在 Stack Overflow 上执行此操作的答案。前者是here,后者是here

答案 1 :(得分:0)

这几乎是100%正确的,或者至少给出了如何执行这两项操作的想法。我直接在这个糟糕的编辑窗口中输入了它,因此未经测试。  我认为您为%2 = 0(偶数)和%2> 0(奇数)奠定了坚实的基础

char[] digits = String.valueOf(intValue).toCharArray();

int total = 0;

for (char c: digits) {
    total += Integer.parseInt(String.valueOf(c);
}

char[] reverse = new char[digits.length];
int ptr = 0;
for (int i = digits.length-1; i >=0; i--) {
    reverse[ptr] = digits[i];
    ptr++
}

祝你家庭作业好运。我的意思是练习= P

答案 2 :(得分:0)

如果在功能上模块化程序,则可以赢得一半的成功。另外,在您给出的示例中,实际上是在偶数索引处取反,而在奇数索引处取和。在大多数编程语言中,数组索引均以0开头。

 public static void getNewArray(int[] arrayA) {
     int[] arrayB = new int[arrayA.length];
     for(int i=0; i < arrayA.length; i++) {
         int newNum = -1;
         if(i%2 ==0) { //even index
             newNum = reverse(arrayA[i]);
         }
         else { //odd index
             newNum = sumUp(arrayA[i]);
         }
         arrayB[i] = newNum;
     }
     Arrays.stream(arrayB).forEach(System.out:: println);
 }

 public static int reverse(int a) {
     int reversedNum = 0;
     while (a != 0) {    
            int last_digit = a % 10;    
            reversedNum = reversedNum * 10 + last_digit;
            a = a / 10; 
     }
     return reversedNum;
 }

 public static int sumUp(int a) {
     int sum = 0;
     while (a != 0) {    
            int last_digit = a % 10;    
            sum = sum + last_digit;
            a = a / 10; 
     }
     return sum;
 }