wagnerfrancisco:
No caso, usando client.length, atente que o operador deve ser < e não <=. Além disso você deve efetuar essa consistência antes de acessar o elemento no array:
nome = JOptionPane.showInputDialog("Login:");
while ((i<cliente.length) && !nome.equals(cliente[i].nome)){
i++;
}
Você sempre precisa i < client.length (sempre deve ser true), caso contrário você tem um IndexArrayOutOfBoundsException.
Se eu fiz assim, acontece o que acontecia antes.
Se o nome ficar igual ao cliente[i].nome ele consegue ir, mas se não for ele continua estourando a memoria.
Exemplo:
Dados
cliente.length = 3
cliente[0].nome - Joao
cliente[1].nome - Maria
cliente[2].nome - Jose
i = 0
nome = “”
Teste
insiro nome = Jose
i = 0 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - NAO
Segue
Fim do laço
insiro nome = Maria
i = 0 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - Sim
i ++
i = 1 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - NAO
Segue
Fim do laço
insiro nome = Jose
i = 0 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - Sim
i ++
i = 1 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - SIM
i++
i = 2 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - NAO
Segue
Fim do laço
Agora se eu insiro nome = Marcos
i = 0 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - Sim
i ++
i = 1 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - SIM
i++
i = 2 é menor que cliente.length - SIM
nome é diferente de cliente[i].nome - SIM
i++
i = 3 é menor que cliente.length - NAO
Porém quando chega aqui ele deveria sair do laço do mesmo jeito, mas ele não sai e ai “IndexArrayOutOfBoundsException”
Eu só quero fazer ele sair do laço se e o i for maior que 2 (ou cliente.length que da a mesma coisa).
Como vocês podem ver ele valida se o nome for igual ao cliente[i].nome agora se não ele da pau.