Primeiramente o código que você postou está com erros de compilação, então nem dá pra executar ele.
Após arrumar os erros de compilação, realmente acontece um laço enorme seguido de um estouro de pilha, o erro acontece pelo seguinte motivo:
No método main
você chama o contrutor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
No construtor da classe OrdenacaoString
você chama o método simulacaoLeituraDeDados
;
No método simulacaoLeituraDeDados
você chama novamente o construtor da classe OrdenacaoString
;
E assim sucessivamente até a memória acabar.
O construtor de uma classe serve para inicializar os atributos de instância dos objetos daquela classe, ele não deveria executar nada.
Apague o construtor que você criou e modifique seu método main
pra ficar assim:
public static void main(String[] args) {
OrdenacaoString principal = new OrdenacaoString(); // objeto criado
principal.simulacaoLeituraDeDados();
principal.mostraTrabalhadoresCadastrados();
}
E outra coisa, já que está implementando tudo na mesma classe, não há motivo para instanciar novamente a classe OrdenacaoString
dentro do método simulacaoLeituraDeDados
.
O vetor de trabalhadores também não precisa ser uma variável de instância.