حامد بهرامیان
سه شنبه 08 دی 1394, 17:29 عصر
سلام. دو تابع نوشتم که بدنه ی هردو، کاملا شبیه به هم هست و تنها تفاوتشون در عمل جمع و تفریقه. بااین حال زمانی که تابع جمع رو فراخوانی میکنم، برنامه بدرستی اجرا میشه اما زمانی که تابع تفریق رو فراخوانی میکنم، این خطا رو نمایش میده. لطفا راهنمایی کنید که چرا این خطارو نمایش میده.
تابع جمع:
public void plus(BigNumber x) { int n = 0, ans; StringBuilder res = new StringBuilder(); int counter2 = this.counter >= x.counter ? this.counter : x.counter; for (int in = MaxSize - 1; counter2 > 0; in--, counter2--) { for (int i = 9, j = 1; i >= 0; i--, j++) { ans = ((this.number[in].charAt(this.number[in].length() - j) - 48) + (x.number[in].charAt(x.number[in].length() - j) - 48) + n); if (ans >= 10) { res.insert(0, String.valueOf(ans % 10)); n = 1; } else { res.insert(0, String.valueOf(ans)); n = 0; } } this.number[in].replace(0, 10, String.valueOf(res)); res.delete(0, 10); } }
و تابع تفریق:
public void Subtract(BigNumber x) {
int n = 0;
int ans;
StringBuilder res = new StringBuilder();
int counter2 = this.counter >= x.counter ? this.counter : x.counter;
for (int in = MaxSize - 1; counter2 > 0; counter2--, in--) {
for (int i = 9, j = 1; i >= 0; i--, j++) {
ans = ((this.number[in].charAt(this.number[in].length() - j) - 48) - (x.number[in].charAt(x.number[in].length() - j) - 48)) - n;
if (ans < 0) {
res.insert(0, String.valueOf(ans + 10));
n = 1;
} else {
res.insert(0, String.valueOf(ans));
n = 0;
}
this.number[in].replace(0, 10, String.valueOf(res));
res.delete(0, 10);
}
}
}
باسپاس
تابع جمع:
public void plus(BigNumber x) { int n = 0, ans; StringBuilder res = new StringBuilder(); int counter2 = this.counter >= x.counter ? this.counter : x.counter; for (int in = MaxSize - 1; counter2 > 0; in--, counter2--) { for (int i = 9, j = 1; i >= 0; i--, j++) { ans = ((this.number[in].charAt(this.number[in].length() - j) - 48) + (x.number[in].charAt(x.number[in].length() - j) - 48) + n); if (ans >= 10) { res.insert(0, String.valueOf(ans % 10)); n = 1; } else { res.insert(0, String.valueOf(ans)); n = 0; } } this.number[in].replace(0, 10, String.valueOf(res)); res.delete(0, 10); } }
و تابع تفریق:
public void Subtract(BigNumber x) {
int n = 0;
int ans;
StringBuilder res = new StringBuilder();
int counter2 = this.counter >= x.counter ? this.counter : x.counter;
for (int in = MaxSize - 1; counter2 > 0; counter2--, in--) {
for (int i = 9, j = 1; i >= 0; i--, j++) {
ans = ((this.number[in].charAt(this.number[in].length() - j) - 48) - (x.number[in].charAt(x.number[in].length() - j) - 48)) - n;
if (ans < 0) {
res.insert(0, String.valueOf(ans + 10));
n = 1;
} else {
res.insert(0, String.valueOf(ans));
n = 0;
}
this.number[in].replace(0, 10, String.valueOf(res));
res.delete(0, 10);
}
}
}
باسپاس