ورود

View Full Version : سوال: خطای StringIndexOutOfBoundsException



حامد بهرامیان
سه شنبه 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);
}
}

}



باسپاس

حامد بهرامیان
سه شنبه 08 دی 1394, 17:36 عصر
کد HTML تابع جمع، هربار بهم ریخته میشه. از کد PHP هم استفاده کردم، همین اتفاق افتاد. لطفا نحوه قرار دادن کدهاهم توضیح بدید. باتشکر