Я делаю этот проект в java, который принимает два целочисленных значения (максимум 30 цифр) и складывает их вместе. Поскольку мне не разрешено использовать Big Integer или другой класс, я думал о том, чтобы взять их как строку, а затем преобразовать их в целые числа. Вот то, что я до сих пор:Добавление более 30 цифр
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. Я также подумал о преобразовании более короткого массива в ту же длину, что и более длинный массив, но в моем коде будет много строк. Спасибо за помощь. Я буду принимать все положительные/отрицательные предложения.
по-видимому, я не Не знаете, как использовать [array.length> array2.length? array.length:] нотация ... можете ли вы просветить меня? –
мы называем это тройной операцией. он работает как ((какое-то условие)? Если условие истинно, тогда выполняйте меня: иначе исполняйте меня). – SMA