Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何添加两个长度不同的int数组?_Java_Arrays_If Statement_For Loop_Int - Fatal编程技术网

Java 如何添加两个长度不同的int数组?

Java 如何添加两个长度不同的int数组?,java,arrays,if-statement,for-loop,int,Java,Arrays,If Statement,For Loop,Int,我一直在一个Java实验室工作,它希望我们让用户输入两个长达50位的数字,然后将它们相加。除了两个阵列的长度不同之外,我已经成功地完成了所有任务。我一直在玩弄这个代码有一段时间了,但我一直没有找到答案。任何人都可以看看这方面的代码,并有任何建议吗?谢谢 int[] number1 = new int[input1.length()]; int[] number2 = new int[input2.length()]; int[] answer = new int[input1.length()]

我一直在一个Java实验室工作,它希望我们让用户输入两个长达50位的数字,然后将它们相加。除了两个阵列的长度不同之外,我已经成功地完成了所有任务。我一直在玩弄这个代码有一段时间了,但我一直没有找到答案。任何人都可以看看这方面的代码,并有任何建议吗?谢谢

int[] number1 = new int[input1.length()];
int[] number2 = new int[input2.length()];
int[] answer = new int[input1.length()];

if(number1.length > number2.length){
    number2 = new int[number1.length];  
    for(int i = 0; i < number2.length - number1.length; i++){
        number2[i] = 0; 
    }
}

if(number2.length > number1.length){
    number1 = new int[number2.length];  
    for(int i = 0; i < number1.length - number2.length; i++){
        number1[i] = 0; 
    }
}
int[]number1=newint[input1.length()];
int[]number2=新的int[input2.length()];
int[]answer=new int[input1.length()];
如果(number1.length>number2.length){
number2=新整数[number1.长度];
for(int i=0;inumber1.length){
number1=新整数[number2.length];
for(int i=0;i

每当我添加(比如120和12)时,它都表示存在数组越界错误。

我对代码的理解是,您尝试将0预先附加(从头部推送)到较短的数组。看看第一个if块。1号的长度大于2号的长度。因此,number2.length-number1.length是负数。然后,在for循环中,i 正确的代码应该是

   if(number1.length > number2.length) {
       int[] number3 = new int[number1.length];

       for(int i = 0; i < number1.length - number2.length; ++i) {
           number3[i] = 0; 
       }
       for(int i = 0; i < number2.length; ++i) {
           number3[i + number1.length - number2.length] = number2[i];
       }

       number2 = number3;
   }
if(number1.length>number2.length){
int[]number3=新的int[number1.length];
对于(int i=0;i

顺便说一句,第二个if块应该以类似的方式更改。也许,java为数组对象提供了API链接插入(0,0)。这将更容易实现。

我对代码的理解是,您尝试将0预先附加(从头部推送)到较短的数组中。看看第一个if块。1号的长度大于2号的长度。因此,number2.length-number1.length是负数。然后,在for循环中,i 正确的代码应该是

   if(number1.length > number2.length) {
       int[] number3 = new int[number1.length];

       for(int i = 0; i < number1.length - number2.length; ++i) {
           number3[i] = 0; 
       }
       for(int i = 0; i < number2.length; ++i) {
           number3[i + number1.length - number2.length] = number2[i];
       }

       number2 = number3;
   }
if(number1.length>number2.length){
int[]number3=新的int[number1.length];
对于(int i=0;i

顺便说一句,第二个if块应该以类似的方式更改。也许,java为数组对象提供了API链接插入(0,0)。这将更容易实现。

我对代码的理解是,您尝试将0预先附加(从头部推送)到较短的数组中。看看第一个if块。1号的长度大于2号的长度。因此,number2.length-number1.length是负数。然后,在for循环中,i 正确的代码应该是

   if(number1.length > number2.length) {
       int[] number3 = new int[number1.length];

       for(int i = 0; i < number1.length - number2.length; ++i) {
           number3[i] = 0; 
       }
       for(int i = 0; i < number2.length; ++i) {
           number3[i + number1.length - number2.length] = number2[i];
       }

       number2 = number3;
   }
if(number1.length>number2.length){
int[]number3=新的int[number1.length];
对于(int i=0;i

顺便说一句,第二个if块应该以类似的方式更改。也许,java为数组对象提供了API链接插入(0,0)。这将更容易实现。

我对代码的理解是,您尝试将0预先附加(从头部推送)到较短的数组中。看看第一个if块。1号的长度大于2号的长度。因此,number2.length-number1.length是负数。然后,在for循环中,i 正确的代码应该是

   if(number1.length > number2.length) {
       int[] number3 = new int[number1.length];

       for(int i = 0; i < number1.length - number2.length; ++i) {
           number3[i] = 0; 
       }
       for(int i = 0; i < number2.length; ++i) {
           number3[i + number1.length - number2.length] = number2[i];
       }

       number2 = number3;
   }
if(number1.length>number2.length){
int[]number3=新的int[number1.length];
对于(int i=0;i

顺便说一句,第二个if块应该以类似的方式更改。也许,java为数组对象提供了API链接插入(0,0)。这将更容易实现。

您需要做的第一件事是将数字放入int数组中。通过将字符串拆分为字符数组来实现这一点。然后转换为int数组。然后加上

String input1 = scanner.nextLine().trim();    <-- get input as String
String input2 = scanner.nextLine().trim();

char[] array1 = input1.toCharArray();         <-- split to char array
char[] array2 = input2.toCharArray();

// convert to int array
int[] intArray1 = new int[array1.length];     <-- declare int array
int[] intArray2 = new int[array2.length];

for (int i = 0; i < array1.length; i++){
    intArray1[i] = Integer.parseInt(String.valueOf(array1[i]));  <-- convert to int
}
for (int i = 0; i < array2.legnth; i++){
    intArray2[i] = Integer.parseInt(String.valueOf(array2[i]));
}

// check which one is larger and add to that one
if (intArray1.length > intArray2.length){
    for (int i = 0; i < intArray2.length; i++){
        intArray1[i] += intArray2[i];                  <-- add values
    }
    System.out.println(Arrays.toString(intArray1);     <-- print largest
} else {
    for (int i = 0; i < intArray1.length; i++){
        intArray2[i] += intArray1[i];
    }
    System.out.println(Arrays.toString(intArray2);
}

所以123和12将打印出233,您需要做的第一件事是将数字放入整数数组。通过将字符串拆分为字符数组来实现这一点。然后转换为int数组。然后加上

String input1 = scanner.nextLine().trim();    <-- get input as String
String input2 = scanner.nextLine().trim();

char[] array1 = input1.toCharArray();         <-- split to char array
char[] array2 = input2.toCharArray();

// convert to int array
int[] intArray1 = new int[array1.length];     <-- declare int array
int[] intArray2 = new int[array2.length];

for (int i = 0; i < array1.length; i++){
    intArray1[i] = Integer.parseInt(String.valueOf(array1[i]));  <-- convert to int
}
for (int i = 0; i < array2.legnth; i++){
    intArray2[i] = Integer.parseInt(String.valueOf(array2[i]));
}

// check which one is larger and add to that one
if (intArray1.length > intArray2.length){
    for (int i = 0; i < intArray2.length; i++){
        intArray1[i] += intArray2[i];                  <-- add values
    }
    System.out.println(Arrays.toString(intArray1);     <-- print largest
} else {
    for (int i = 0; i < intArray1.length; i++){
        intArray2[i] += intArray1[i];
    }
    System.out.println(Arrays.toString(intArray2);
}

所以123和12将打印出233,您需要做的第一件事是将数字放入整数数组。通过将字符串拆分为字符数组来实现这一点。然后转换为int数组。然后加上

String input1 = scanner.nextLine().trim();    <-- get input as String
String input2 = scanner.nextLine().trim();

char[] array1 = input1.toCharArray();         <-- split to char array
char[] array2 = input2.toCharArray();

// convert to int array
int[] intArray1 = new int[array1.length];     <-- declare int array
int[] intArray2 = new int[array2.length];

for (int i = 0; i < array1.length; i++){
    intArray1[i] = Integer.parseInt(String.valueOf(array1[i]));  <-- convert to int
}
for (int i = 0; i < array2.legnth; i++){
    intArray2[i] = Integer.parseInt(String.valueOf(array2[i]));
}

// check which one is larger and add to that one
if (intArray1.length > intArray2.length){
    for (int i = 0; i < intArray2.length; i++){
        intArray1[i] += intArray2[i];                  <-- add values
    }
    System.out.println(Arrays.toString(intArray1);     <-- print largest
} else {
    for (int i = 0; i < intArray1.length; i++){
        intArray2[i] += intArray1[i];
    }
    System.out.println(Arrays.toString(intArray2);
}

所以123和12将打印出233,您需要做的第一件事是将数字放入整数数组。通过将字符串拆分为字符数组来实现这一点。然后转换为int数组。然后加上

String input1 = scanner.nextLine().trim();    <-- get input as String
String input2 = scanner.nextLine().trim();

char[] array1 = input1.toCharArray();         <-- split to char array
char[] array2 = input2.toCharArray();

// convert to int array
int[] intArray1 = new int[array1.length];     <-- declare int array
int[] intArray2 = new int[array2.length];

for (int i = 0; i < array1.length; i++){
    intArray1[i] = Integer.parseInt(String.valueOf(array1[i]));  <-- convert to int
}
for (int i = 0; i < array2.legnth; i++){
    intArray2[i] = Integer.parseInt(String.valueOf(array2[i]));
}

// check which one is larger and add to that one
if (intArray1.length > intArray2.length){
    for (int i = 0; i < intArray2.length; i++){
        intArray1[i] += intArray2[i];                  <-- add values
    }
    System.out.println(Arrays.toString(intArray1);     <-- print largest
} else {
    for (int i = 0; i < intArray1.length; i++){
        intArray2[i] += intArray1[i];
    }
    System.out.println(Arrays.toString(intArray2);
}

所以123和12将打印出233

Java将用所有值等于零的值初始化int数组。所以你实际上什么都不做,你的for循环。我不确定你想用你的代码实现什么,但我建议你重新评估这个问题,然后再尝试一次