BigInteger を使用せずに、大きな数を加算するプログラムを作成しています。ただし、長い追加には問題があります。
int l = this.arr.length > arg.arr.length ? this.arr.length : arg.arr.length;
byte[] result = new byte[l];
byte carry = 0;
for(int i = 0; i < result.length; i++){
byte sum;
try{
sum = (byte) (this.arr[i] + arg.arr[i] + carry);
}
catch(ArrayIndexOutOfBoundsException e){
try{
sum = (byte) (this.arr[i] + carry);
}
catch(ArrayIndexOutOfBoundsException ex){
sum = (byte) (arg.arr[i] + carry);
}
}
//carry
if(sum > 9){
result[i] = (byte) (sum % 10);
carry = 1;
}
else{
result[i] = sum;
carry = 0;
}
}
if(carry > 0){
byte[] tmp = new byte[l+1];
System.arraycopy(result, 0, tmp, 0, l);
tmp[tmp.length - 1] = carry;
result = tmp;
}
したがって、2 つの数値を追加するには、try-catch を 2 回使用して、いずれかの配列に数字が残っているかどうかを確認します。メソッドは正常に機能していますが、この try-catch は見栄えがよくありません。他の方法でこれを行うことはできますか?