将两个不同长度的整数数组求和为一个整数数组。JAVA
我有一个项目,需要我写一个方法,将两个整数数组求和为一个整数数组。要求是数组的每个值中只能有一个数字。例如“1”而不是“11”,原始两个数组的长度可能不同。该项目背后的想法是,这些数组的长度应该大于整数变量允许的长度。我们应该创建这个新的数组,这样我们就可以打印出每个位置,基本上不用长字符就可以用大数字进行计算。 这就是我现在拥有的将两个不同长度的整数数组求和为一个整数数组。JAVA,java,arrays,Java,Arrays,我有一个项目,需要我写一个方法,将两个整数数组求和为一个整数数组。要求是数组的每个值中只能有一个数字。例如“1”而不是“11”,原始两个数组的长度可能不同。该项目背后的想法是,这些数组的长度应该大于整数变量允许的长度。我们应该创建这个新的数组,这样我们就可以打印出每个位置,基本上不用长字符就可以用大数字进行计算。 这就是我现在拥有的 public static int[] add ( int[] arr1, int[] arr2) { int length; if (arr1.l
public static int[] add ( int[] arr1, int[] arr2) {
int length;
if (arr1.length >= arr2.length) {
length = arr1.length;
}
else {
length = arr2.length;
}
int[] smallAr = new int [length];
int[] bigAr = new int [length];
if (arr1.length > arr2.length) {
for (int i = 0; i < length; i++) {
smallAr[i] = arr2[i];
bigAr[i] = arr1[i];
}
}
else {
for (int i = 0; i < length; i++) {
smallAr[i] = arr1[i];
bigAr[i] = arr2[i];
}
}
int[] addition = new int[length];
for (int i = 0; i < length; i++) {
if (i > smallAr.length -1) {
addition[i] = bigAr[i];
}
else {
addition[i] = bigAr[i] + smallAr[i];
}
}
return addition;
}
公共静态int[]add(int[]arr1,int[]arr2){
整数长度;
如果(arr1.length>=arr2.length){
长度=1.5米长;
}
否则{
长度=2.5米长;
}
int[]smallAr=新的int[长度];
int[]bigAr=新的int[长度];
如果(arr1.length>arr2.length){
for(int i=0;ismallAr.length-1){
加法[i]=bigAr[i];
}
否则{
加法[i]=bigAr[i]+smallAr[i];
}
}
返回加法;
}
当前运行时会出现越界错误。我也明白,如果阵列需要额外的空间进行携带,这将无法正常工作。这方面的任何帮助都会很好 第一步,创建一个足够长的新数组-找到
arr1.length
和arr2.length
的最大值。第二步,将两个数组中每个有效索引的总和分配给输出数组-如果数组长度大于或等于当前索引,则默认值为零。第三步,返回新数组。像
public static int[] add(int[] arr1, int[] arr2) {
int[] r = new int[Math.max(arr1.length, arr2.length)];
for (int i = 0; i < r.length; i++) {
r[i] = (i < arr1.length ? arr1[i] : 0) + (i < arr2.length ? arr2[i] : 0);
}
return r;
}
公共静态int[]add(int[]arr1,int[]arr2){
int[]r=新的int[Math.max(arr1.length,arr2.length)];
对于(int i=0;i
“数组的每个值只能有一个整数”,这毫无意义。当然,每个数组位置只能有一个值!!请重新措辞。为什么要复制这些值。没有这个必要。扔掉那些代码,重新思考你在做什么当然,代码失败了。这两个复制循环都将迭代整个长度,因此它将超过较小数组的长度。我已经更新了,以便更深入地了解这个问题。复制@QuintonWallenfang这是一个好的示例。如果我现在理解你了,你想添加两个数字,其中数字的数字存储在一个数组中。例如,您想添加{9,4,7}
和{8,5}
以给出{1,0,3,2}
,就像您在纸上所做的那样,从右边添加数字,当数字之和大于9时结转,结果可以比最长的输入更长。对吗?如果是这样,请编辑问题并展示示例,以澄清您的问题。尽管这是项目任务代码的一个非常好的实现(您做OPs任务真是太好了),但它并没有向OP解释问题中的代码有什么问题。感谢您的帮助!我更新了原来的问题,因为我没有像我需要的那样具体。这里的第一篇帖子让我有点头晕。