Problema ao atribuir outro valor em um Switch de char

Criei um programa aqui q recebe como parâmetro um char e de acordo com os cases, atribui outro valor a uma outra variável char, só que quando chamo esse método pra ele fazer essa atribuição, ele imprime sempre algo na saída como um [](um desenho parecido com isso). Nao sei pq, alguém ajuda?


public static void main(String[] args){

String t = "9wq";
char[] e = "t.toCharArray();
char[] s = new char[e.length];

			for(int i=0;i<e.length;i++){

				// Esse a é um objeto da própria classe
				a.valor(e[i], s[i]);
				
			}
			

// Aqui quando peço pra imprimir, ele imprime aquele caractere estranho que falei.
System.out.println(s[i]);
}

public void valor(char caracterOriginal, char caracterEquivalente){
		
		
		switch(caracterOriginal){
		
		case '1':
			caracterEquivalente = ' ';
			break;

		case '2':
			caracterEquivalente = 'a';
			break;
		
		case '3':
			caracterEquivalente = 'b';
			break;
		
		case '4':
			caracterEquivalente = 'c';
			break;
			
		case '5':
			caracterEquivalente = 'd';
			break;
		
		case '6':
			caracterEquivalente = 'e';
			break;

		case 'q':
			caracterEquivalente = 'f';
			break;
		
		case 'w':
			caracterEquivalente = 'g';
			break;

                default:
}
}

Steam, não funciona porque você está fazendo uma passagem de parametros por valor, ou seja, você está passando o valor apontado no indice do vetor para o outro método, e no outro método atribuindo um novo valor para a variavel caracterEquivalente, mas não significa que o valor que você passou também será alterado.

O que você poderia fazer aí de imediato seria isso:

[code]public static void main(String[] args) {
Teste a = new Teste();
String t = “9wq”;
char[] e = t.toCharArray();
char[] s = new char[e.length];

	for (int i = 0; i < e.length; i++) {

		// Esse a é um objeto da própria classe
		try {
			s[i] = a.valor(e[i]);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		System.out.println(s[i]);

	}

}

public char valor(char caracterOriginal) throws Exception {

	switch (caracterOriginal) {

	case '1':
		return ' ';

	case '2':
		return 'a';

	case '3':
		return 'b';

	case '4':
		return 'c';

	case '5':
		return 'd';

	case '6':
		return 'e';

	case 'q':
		return 'f';

	case 'w':
		return 'g';

	default:
		throw new java.lang.NullPointerException("Caracter inválido");
	}
}[/code]

Quando você passa um valor por parâmetro, o Java cria uma variável local no método, e como você não retorna nada, ele só usa essa variável localmente e depois exclui da memória. Tenta retornar um char nessa função, vai funcionar.