Alternativa ao uso do SWITCH(Resolvido)

6 respostas
C

Sem querer abusar, gostaria de uma outra dica. Tenho um método que chama outro método passando parâmetros e um destes parâmetros é o índice de um array. Estou usando SWITCH, mas já ouvi que devemos evitar tal uso. Alguma alternativa para este caso:

public void display(KeyEvent e){
		int array;
		keyCode = e.getKeyCode();
		System.out.println(keyCode);
		switch (keyCode) {
		case 48:
			array = 0;
			outroMetodo(e, keyCode, array);
			break;
		case 49:
			array = 1;
			outroMetodo(e, keyCode, array);
			break;
		case 50:
			array = 2;
			outroMetodo(e, keyCode, array);
			break;
		
		} // fim do switch
		
	}

Grato, Carlos.

6 Respostas

FacaNaCaveira

Fala ai Carlos,

Se puder, poderia postar o codigo do metodo outroMetodo() para poder sugerir alguma alteração e melhoria

Abração 8)
Max

FacaNaCaveira

Fala ai Carlos, uma das coisas que observei de inicio é que vc nao precisa criar a variavel Keycode, uma vez que voce consegue acessar atraves de e.getKeyCode e na passagem de parametros para outroMetodo(e, Array) pois o Keycode vc acessa atraves de e.getKeyCode().

public void display(KeyEvent e){
		int array;
		
		System.out.println(e.getKeyCode());
		switch (e.getKeyCode()) {
		case 48:
			array = 0;
			outroMetodo(e, array);
			break;
		case 49:
			array = 1;
			outroMetodo(e, array);
			break;
		case 50:
			array = 2;
			outroMetodo(e, array);
			break;
		
		} // fim do switch
		
	}

Abração 8)
Max

E

Outra coisa - não use o número 48 se o que você quer é a tecla 0. Use a constante KeyEvent.VK_0 - ela pode ser usada em um switch, se não me engano. Se não puder fazer isso, use ‘0’ (entre aspas simples).

C

Valeu pelas dicas. Aqui vai o código com o outro método (getId)...

public void display(KeyEvent e){
		int array;
		keyCode = e.getKeyCode();
		System.out.println(keyCode);
		switch (keyCode) {
		case 48:
			array = 0;
			getId(e, keyCode, array);
			break;
		case 49:
			array = 1;
			getId(e, keyCode, array);
			break;
		case 50:
			array = 2;
			getId(e, keyCode, array);
			break;
		
		} // fim do switch
		
	}
	
	public void getId(KeyEvent e, int keyCode, int array){
				
			if (e.getID() == KeyEvent.KEY_PRESSED){
				 teclas[array].setBackground(color);
			}
			else if (e.getID() == KeyEvent.KEY_RELEASED){
				 teclas[array].setBackground(normal);	
			}
	}

Existe alternativa a este switch? (ainda não fiz alterações no código - quero resolver este problema (???) do switch primeiro)

Weber_Kondo

poderia mapear os valores de cada chave.

ex:

Map<Integer, Integer> keyCodes = new HashMap<Integer, Integer>();

		keyCodes.put(48, 0);
		keyCodes.put(49, 1);
		keyCodes.put(50, 2);
		...
		
public void display(KeyEvent e){  
        int array;  
        keyCode = e.getKeyCode();  
        System.out.println(keyCode); 
	outroMetodo(keyCodes.get(keyCode), keyCode, array);
}

No lugar do Map, que usei como exemplo, poderia usar um Properties, lendo de um arquivo no seu classpath…
http://www.guj.com.br/article.show.logic?id=35

C

Ok, muito obrigado. Vou dar uma olhada…

Criado 27 de julho de 2010
Ultima resposta 27 de jul. de 2010
Respostas 6
Participantes 4