Примечание: Пожалуйста, не говорите, чтобы использовать методы класса String, поскольку здесь я создаю все методы String самостоятельно.Java: Создание класса String: ArrayIndexOutOfBoundsException
Цель: рассмотреть двухструнный принц и сони. Я хочу computeConcate метод запросить позицию (скажем 4 введен), а затем получить строку с первого имени, начиная с начала до 4-го положения, и учесть ее фамилией viz soni. Поэтому я получил prinsoni
Ошибка: ArrayIndexOutOfBondsException на линии обозначен как ошибки в computeConcate() метод
Причина ошибки: Строка, полученный таким образом (то есть конкатенации первого и последнего имени может быть atmost длины первого + фамилия)
так что я создал Струнный
char []firstSubString;
firstSubString = new char[so.computeLength(firstName) + so.computeLength(lastName)];
ее длина прямо сейчас, как я, хотя сумма первого и последнего имени, но после этого метода computeSubstring() она меняется от длины имени.
Что я хочу?
Можете ли вы предоставить мне путь, так что computeSubstring не заканчивается меняющийся ДЛИНА firstSubString.
/**
* Take two strings
* Run a loop pause when counter is encountered
* Now use + to concatenate them
**/
@Override
public char[] computeConcatenation(char[] firstName, char[] lastName, int pos) {
StringClass so = new StringClass();
Boolean flag = false;
char []firstSubString;
firstSubString = new char[so.computeLength(firstName) + so.computeLength(lastName)];
System.out.println(firstSubString.length); // O/p is 10 (length of // first name + last name
firstSubString = so.computeSubstring(firstName, pos);
System.out.println(firstSubString.length); // o/p is 6. length of // first name
int len = so.computeLength(firstSubString);
// To find pos
for(int i = 0; i < so.computeLength(lastName); i++){
// ArrayIndexOfOfBondsException on this line
Error : firstSubString[len + i] = lastName[i];
}
return firstSubString;
}
Here is the code for substring method
/**
* Traverse the string till pos. Store this string into a new string
*/
@Override
public char[] computeSubstring(char[] name, int pos) {
StringClass so = new StringClass();
char []newName;
newName = new char[so.computeLength(name)];
for(int i = 0; i < so.computeLength(name); i++){
if(i == pos) break;
newName[i] = name[i];
}
return newName;
}
Вы должны написать утилиту/метод тестирования, который берет ваш аргумент и выгружает их стандартным образом. Просто написать этот метод, вероятно, покажет вам, где ошибка. – jdv
@ GiovanniBotta Codereview предназначен только для ** рабочего кода **. Сломанный код вне темы. –
@jdv Написание метода тестирования - это более поздняя тема, когда я выясню это изменение в проблеме длины, пояснил я. Вопрос прямо сейчас в том, почему, черт возьми, длина firstSubString была изменена после метода computeSubString и как я могу предотвратить ее изменение. –