Problema com dimensao de array char

5 respostas
R
Boas pessoal. estou aqui com um probleminha. Estou a fazer o jogo do galo e tenho um array para guardar as tentativas ja tentadas pelo utilizador, mas esta sempre dando erro de ultrapassar o indice maximo, Deixo o codigo do metodo onde me indica que acontece o erro:

static boolean jaUsada( char tentativa) {

int idx=0;

char []usadas= {67};
for (int i=0; i<=usadas.length;i++) {
		if(usadas[i] == tentativa) {   //Verifica se a letra  foi utilizada 
			 
		return false;	}	
			else	
				idx++;
				usadas[idx] = tentativa; //Caso não tenha sido utilizada ela é adicionada no final
		}
		
	
	return true;
}

5 Respostas

R

Mudei para este codigo e continua a dar erro

static boolean jaUsada( char tentativa) {

char []usadas= {67};
	
	for (int i=0; i<=usadas.length;i++) {
		if(usadas[i] == tentativa) {   //Verifica se a letra  foi utilizada 
			 
		return false;	}	
			else	
			
				usadas[usadas.length+1] = tentativa; //Caso não tenha sido utilizada ela é adicionada no final
		}
		
	
	return true;
}
wsilvaasc

Não seria

char usadas[67] = {};

?

R

Da Erro diz para eliminar o 67…

wsilvaasc

Tenta assim então

public class TesteChar {
	private static String usadas[] = {};

	public static boolean jaUsada(String tentativa) {
		int idx = 0;
		for (int i = 0; i < usadas.length; i++) {
			if (usadas[i].equals(tentativa)) {
				return false;
			} else {
				idx++;
				usadas[idx] = tentativa;
			}
		}
		return true;
	}
}
rodevops

Sabe usar listas?

private static List<Character> usadas = new ArrayList<>();

public boolean isUsada(char tentativa) { // is é boa prática, leia sobre code conventions em java...
    if (usadas.contains(tentativa)) {
        return true;
    }
    usadas.add(tentativa);
    return false;
}

Aliás o método jaUsada tem duas responsabilidades (testar se existe e armazenar na lista) e o ideal seria separar as coisas…

public boolean isUsada(char tentativa) {
    return usadas.contains(tentativa);
}

public void addTentativa(char tentativa) {
     usadas.add(tentativa);
}

Retirei os static dos métodos porque para o seu caso não se faz necessário, um atributo estático na classe pode ser acessado por métodos não estáticos, o que não pode é atributos não estáticos sendo acessados de métodos estáticos…

Criado 15 de janeiro de 2018
Ultima resposta 16 de jan. de 2018
Respostas 5
Participantes 3