我的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,示例是我的首要问题!
答案 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
中。
关于方法reverseInt
和sumDigits
(如注释中所述),已经有关于如何在 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;
}