Причина вашей проблемы в том, что вы постоянно добавляете StringBuilder, а затем устанавливаете для каждого индекса это добавленное значение. Это означает, что каждый индекс будет выглядеть следующим образом:
index 0: 0
index 1: 0 1
index 2: 0 1 2
index 3: 0 1 2 3 foo
index 4: 0 1 2 3 foo 4
index 5: 0 1 2 3 foo 4 5 bar
Я предполагаю, что это та же концепция, что и FizzBuzz, что означает, что у вас, скорее всего, есть другая проблема: вы добавляете индекс каждый раз, независимо от того, является ли он кратное 3 или 5. Я уверен, что вы этого не хотите. Вы, вероятно, хотите что-то ближе к этому:
public String[] getFooBar(int size) {
String[] stringsArray = new String[100];
for (int i = 0; i <= size; i++) {
StringBuilder stringBuilder = new StringBuilder();
if (i % 3 == 0) {
stringBuilder.append(String.format("Foo"));
}
if (i % 5 == 0) {
stringBuilder.append(String.format("Bar"));
}
if(i % 5 != 0 && i % 3 != 0) {
stringsArray[i] = Integer.toString(i);
} else {
stringsArray[i] = stringBuilder.toString();
}
}
return stringsArray;
}
Но на самом деле не все это нужно. Вы можете просто сделать это:
public String[] getFooBar(int size) {
String[] arr = new String[100];
for(int i = 0; i <= size; i++) {
String str = ""; // In situations like this the JVM turns this into a StringBuilder behind the scenes
if(i % 3 == 0) {
str += "Foo";
}
if(i % 5 == 0) {
str += "Bar";
}
if(i % 3 != 0 && i % 5 != 0) {
arr[i] = Integer.toString(i);
} else {
arr[i] = str;
}
}
return arr;
}