Динамическая генерация последовательности алфавитов - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть требование, где мне нужно создать последовательность вроде A: A, A: B ...... так далее до A: Z. Здесь я буду хранить firstName как A и LastName как A, затем вызову API, который дает мне результаты, основанные на этом критерии. В следующей итерации имя будет A, а фамилия будет B и т. Д., Пока имя не будет «A», а фамилия - «Z»

Это может быть достигнуто двумя циклами for, и я получу результаты от A: A до Z: Z.

Подвох здесь в том, что конечная система не может обработать запрос с именем: A и lastName: F, тогда я хочу, чтобы поиск начинался с firstName: A и lastName : FA . Это должно продолжаться до FZ, т.е. A: FA .... A: FZ. После того, как это сделано, итерация должна начинаться с firstName: A и lastName G. и т. Д.

Короче говоря, при любой комбинации, если есть ошибка, я должен динамически добавлять A - Z к lastName и позвоните в мой API и продолжайте.

Высоко оцените вашу помощь.

1 Ответ

0 голосов
/ 01 апреля 2020

Просто добавьте еще один for-l oop, когда возникает ошибка, например:

String[26] alphabet = {"A", "B",...};
for(int i = 0;i<26;i++){
//request
if(Error occures){
Stringbuilder sb = new Stringbuilder(2);
for(int j = 0; j<26; j++){
   sb.append(alphabet[i]); //append the first character
   sb.append(alphabet[j]); // append the second character
   //request sb.toString()
   sb.deleteCharAt(1); // "reset"
   sb.deleteCharAt(0); // "reset"

}

Но это решение не работает, когда ошибка возникает снова. Если вы хотите повторить l oop при возникновении ошибки во втором l oop, используйте функцию, подобную этой:

String[26] alphabet = {"A", "B",...};
for(int i = 0;i<26;i++){

if(error){
Stringbuilder Strb = new Stringbuilder();
Strb.append(alphabet[i]);
requestwithmoreExt(
}
public void requestwithmoreExt(Stringbuilder sb){
for(int j = 0; j<26; j++){
sb.append(alphabet[j]); // append the second character
//request sb.toString();
if(error){
requestwithmoreExt(sb);
}
for(int k = 0;k<sb.length();k++){
sb.deleteCharAt(k);
}

}
}

, но обратите внимание, это рекурсивно! если ошибки происходят слишком часто, строка будет расти до бесконечности !!!

...