【发布时间】:2021-06-27 17:29:45
【问题描述】:
我正在为 java 开发一个代码来用示例折叠数组中的元素
A[0] = 2, A[1] = 7, A[2] = 9, A[ 3] = 7
然后用这种格式折叠起来
A[0] = (A[0] + A[3]) mod 10 = 9
A[1] = (A[1] + A[2]) mod 10 = 6
然后再次折叠直到单张
A[0] = (A[0] + A[1]) mod 10 = 5
以下是不完整的代码:
import java.util.ArrayList;
import java.util.List;
import java.lang.Math;
public class ArrayFolder {
public static void main(String[] args) {
//ArrayList
int[] A = {
2,
7,
9,
7
};
//To define a new Array later
List<Integer> intList = new ArrayList<Integer>();
//To print the ArrayList A
for (int x = 0; x < A.length; x++) {
System.out.println("A[" + x + "]= " + A[x]);
}
//Function to fold the ArrayList into half
int res = 0;
int result = 0;
//if A.length is Even
if (A.length % 2 == 0) {
for (int i = 0; i < A.length / 2; i++) {
res = A[i] + A[A.length - 1 - i];
result = res % 10;
intList.add(result);
}
}
//if A.length is Odd
else {
for (int i = 0; i < A.length / 2; i++) {
res = A[i] + A[A.length - 1 - i];
result = res % 10;
intList.add(result);
}
result = A[A.length / 2];
intList.add(result);
}
//add the int to New ArrayList
Integer[] intArray = new Integer[intList.size()];
intArray = intList.toArray(intArray);
System.out.println("\nNew Array ");
for (Integer s: intArray) {
System.out.println(s);
}
}
}
编译结果
A[0]= 2
A[1]= 7
A[2]= 9
A[3]= 7
New Array
9
6
我找不到一个有效的方法来保持循环函数,所以当一个整数实现时代码将停止折叠。
我的问题是,有没有什么有效的方法来循环这个过程,以便以后它可以处理更大的数组元素?。
请提供逻辑或代码,以便我继续编写代码。
非常感谢
【问题讨论】:
-
如果数组的大小是奇数怎么办?
-
@akuzminykh 在我提供的代码中,已经存在数组大小为奇数的情况。见下文第 4 条评论
-
如果您在问题陈述中添加类似的细节会很好。中间的元素是不是被忽略了?
-
@akuzminykh 抱歉,我忘了提到对于奇数数组,中间的元素保持不变,就像数组 A[0]、A[1]、A[2] 一样。 A[1] 的值 = A[1]。
标签: java arrays arraylist linked-list mod