[RESOLVIDO] Verificar se um array está cheio

Bom dia galera, estou tentando lançar um erro caso o usuário cadastre mais usuários no array do que o limite, mas ele está cadastrando infinitamente sem acusar nenhum erro, poderiam me ajudar?

public class Sistema {
	Usuario usuarios [] = new Usuario[2];

	public void adicionarUsuario(Usuario usuario) throws Exception{
		boolean cheio = false;

		if(cheio==true) {
			Exception erro = new Exception("Erro! Vetor está totalmente preenchido!");
			throw erro;
		}

		for (int j = 0; j < usuarios.length; j++) {
			if(usuarios[j]==null) {
				usuarios[j] = usuario;

			}else if (usuarios[j]!=null) {
				cheio = true;
			}
		}		
	}			
}






public class Q2 {
	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		
		Sistema sistema = new Sistema();
		Usuario usuario = new Usuario();
		
		
		int opc = 0;
		
		while(opc!=2) {
			System.out.println("1-Cadastrar novo usuário"+"\n2-Sair");
			opc = ler.nextInt();
			
			
			if(opc==1) {
			try {
				sistema.adicionarUsuario(usuario);
				System.out.println("Novo usuário cadastrado!");
			} catch (Exception e) {
				System.out.println(e.getMessage());
				
				}
			}
		}
		
	}

}

Toda vez que o médoto adicionarUsuario é invocado você atribui o valor false para a variável cheio, logo essa variável nunca permanecerá true.

1 curtida

Aqui tu não precisa testar igualdade, pois a variável booleana por si só já representa o valor!

Exemplo:

if (cheio) {
    //Codificação
}
1 curtida

Valeu mano!