gpt4 book ai didi

java - 30位以上数字的加法

转载 作者:行者123 更新时间:2023-12-02 05:18:34 29 4
gpt4 key购买 nike

我正在用java做这个项目,它接受两个整数值(最多30位)并将它们加在一起。由于我不允许使用 Big Integer 或其他类,因此我考虑将它们作为字符串,然后将它们转换为整数。这是我到目前为止所拥有的:

import java.util.*;
public class Test{
public static void main(String[] args){

System.out.print("Input 1: ");
char[] firstInteger = myInput();
System.out.print("Input 2: ");
char[] secondInteger = myInput();

int[] num1 = char2Integer(firstInteger);
int[] num2 = char2Integer(secondInteger);
sum(num1, num2);
}
public static char[] myInput(){
String numbers;
Scanner input = new Scanner(System.in);
numbers = input.nextLine();

while(numbers.length() > 30){
System.out.println("Please input valid integers with digits less than 30");
numbers = input.nextLine();
}return numbers.toCharArray();
}
public static int[] char2Integer(char[] integer){
int[] numbers = new int[integer.length+1];
int j=integer.length-1;

for (int i = numbers.length-1; i>0 ; i--){
if(j>-1){
numbers[i] = (int)(integer[j]-'0');
j--;
}
}return numbers;
}
public static void sum(int[] num1, int[] num2){
int[] sum = new int[num1.length];

for (int i = sum.length-1 ; i> 0; i--){
sum[i] += num1[i]+num2[i];

if(sum[i] >= 10){
sum[i] = sum[i]%10;
sum[i-1]++;
}
}
for (int i = 0; i< sum.length; i++)
System.out.print(sum[i]);
}
}

我现在的问题是:当添加不同长度的数组时,我得到奇怪的答案。(添加相同长度的数组效果很好。)例如:

input 1 = 50
input 2 = 500
output = 100

input 1 = 50
input 2 = 5
output = java.lang.ArrayIndexOutOfBoundsException: 2

我尝试反转数组然后将它们相加,但出现 outOfBoundsException :-1。我还考虑将较短的数组转换为与较长数组相同的长度,但这会在我的代码中占用很多行。感谢您的帮助。我会接受所有正面/负面的建议。

最佳答案

检查此代码的求和函数。

public static void sum(int[] num1, int[] num2){
int num1len = num1.length;
int num2len = num2.length;

int[] sum= new int[num1len>num2len?num1len:num2len];

for (int i = sum.length-1 ; i> 0; i--){
if(num1len>0)
sum[i] += num1[--num1len];

if(num2len>0)
sum[i] += num2[--num2len];

if(sum[i] >= 10){
sum[i] = sum[i]%10;
sum[i-1]++;
}
}
for (int i = 0; i< sum.length; i++)
System.out.print(sum[i]);
}

关于java - 30位以上数字的加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697830/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com