Я не совсем уверен, почему я продолжаю получать это сообщение об ошибке. Я пытаюсь добавить int three, чтобы результат. Я не понимаю, почему это не позволяет мне делать это, кажется, результат будет пустым, когда я попытаюсь поместить три в индекс size1-1.Исключение из потока «main» java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
Сообщение об ошибке: (строки 452, 423, 11 отмечены)
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.set(Unknown Source)
at BigInt.singleDigitMultiply(BigInt.java:452)
at BigInt.multiply(BigInt.java:423)
at Dem.main(Dem.java:11)
Порция класса BigInt:
public BigInt multiply(BigInt B2) {
BigInt result = new BigInt();
BigInt B1 = this;
result = singleDigitMultiply(B1,B2); Line 423
return result;
}
private BigInt singleDigitMultiply(BigInt B1, BigInt B2) {
int size1 = B1.num.size(), size2 = B2.num.size();
BigInt result = new BigInt();
//result.num = new ArrayList (Collections.nCopies(size1+1, null));
boolean carryover = false;
int one, two, three, four, five, carry;
for (int i = size1-1; i >= 0; i--) {
one = B1.num.get(i);
two = B2.num.get(0);
int prod = B1.num.get(i) * B2.num.get(0);
int prodInt = prod/10;
if (prod > 9) carryover = true;
if (i == size1-1) {
if (carryover) {
three = prod % (prodInt * 10);
}
else {
three = prod;
}
System.out.println(result.num.set(size1-1,three)); Line 452
}
// else {
// four = B1.num.get(i+1) * two;
// carry = four % (four - prodInt);
// if (four > 9) {
//
// five = prod + carry;
// three = five % (prodInt * 10);
// }
// else {
// three = prod;
// }
// result.num.add(i,three);
// }
}
return result;
}
Основной класс:
public class Dem {
public static void main(String[] args) {
BigInt B1 = new BigInt("55");
BigInt B2 = new BigInt("1");
BigInt D = new BigInt();
int u = 8;
int j = 10;
//BigInt J = new BigInt("u");
D = B1.multiply(B2); Line 11
System.out.println(u/j);
}
}
im not sure Я понимаю, что вы говорите ... настройка result.num? как я могу установить значения, которые я хочу в нем, прежде чем у меня будет правильное значение? – user2977267
Я имею в виду, что этот код не будет работать, потому что result.num никогда не получает значения, поэтому вы получите исключение Null Pointer в result.num.set (...), но я предполагаю, что это просто вы сделали включите его или забудьте добавить его. –
Как он не получает значение? Я пытаюсь установить int three в index size1-1. У меня есть другой метод, в котором это работает отлично. Благодарю. – user2977267