achando que o problema era só referente a expressão "teste[i].length() == 0", mas não era.
Sempre que ocorre uma exceção, a mensagem de erro mostra a classe e a linha em que ocorreu. Sempre leia as mensagens e veja o que tem na linha indicada, é por ali que vc começa a investigar o erro.
E para imprimir o array no final, ou vc faz um loop e imprime os elementos um a um:
for (String s : quebra1) {
System.out.println(s);
}
Ou usa a classe java.util.Arrays
(no início do código, faça o import java.util.Arrays;
):
System.out.println(Arrays.toString(quebra1));
Sobre o código, tem um if
vazio que não faz sentido. Se o código está todo no else
, inverta a condição do if
:
if (str.length() % x == 0) {
String[] quebra = new String[x];
// etc...
E a condição do while
é redundante. Se o tamanho for menor que qtdChar
, então é desnecessário testar se é zero (pois zero já é menor que qtdChar
). Então bastaria:
while (quebra[i].length() <= qtdChar) {
for (int j = 0; j < qtdChar; j++) {
// etc...
Também é desnecessário criar o outro array quebra1
. Simplesmente imprima quebra
dentro do if
:
String str = "SERAQUESOBRA";
int x = 3;
int qtdChar = str.length() / x;
if (str.length() % x == 0) {
String[] quebra = new String[x];
for (int i = 0; i < x; i++) {
quebra[i] = " ";
}
for (int i = 0; i < x; i++) {
while (quebra[i].length() <= qtdChar) {
for (int j = 0; j < qtdChar; j++) {
// substring em vez de charAt + String.valueOf
quebra[i] += str.substring(j, j + 1);
}
}
}
// imprime dentro do if
System.out.println(Arrays.toString(quebra));
}
Dito isso, o que é para o código fazer? Só lendo, não dá pra saber, pois o resultado final é um array com a palavra " SERA"
3 vezes (incluindo um espaço no início). Se tiver o enunciado, fica mais fácil pra gente ajudar.