GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

ArrayList para char[]?

#1

Boa tarde pessoal,
estava usando o " while( !Arrays.asList( vetorDeComandos ).contains( inputUsuario )) " para verificação do que o usuario digita pra ver se teria o mesmo dentro de um Vetor de String com o Array.asList, e aparentemente funcionava normal. Porem ouve uma mudança no projeto e mudei o inputUsuario e VetorDeComandos para char, e parece que agora independente do que for digitado, o codigo entra no while e nao sai mais. O intuito é verificar se o comando está dentro do vetor, se sim, nao entra no while. Caso nao esteja, deveria entrar no while e pedir o comando denovo, se acertar sair do laço.

char[] vetorDeComandos = {'a', 'b', 'c', 'd'};

charNext();   (função que vai ler o inputUsuario)

while (!(Arrays.asList(vetorDeComandos).contains(InputUsuario))) {
                    System.out.println("Comando inválido.");
                    charNext();
                }

Gostaria de saber se alguem sabe o motivo de isso acontecer ou aonde eu errei.

0 Likes

#2

O código está insuficiente. Que tipo é o comandos? Que tipo é o resposta?

0 Likes

#3

Desculpa, esqueci de mudar o codigo, mas no caso era o proprio vetor mencionado e o input

0 Likes

#4

Você basicamente quer ver se um char contém dentro de um array de char?

O que você está fazendo com Arrays.asList é basicamente criar uma lista de array de char em vez de lista de char:

List<char[]> listaDeArrayDeChar = Arrays.asList(caracteres);

Um jeito fácil de verificar se um caractere faz parte de um array de caracteres é:

    char[] arrayCaracteres = {'a', 'b', 'c', 'd', 'e'};
    char caracter = 'c';
    
    boolean contemCaracter = new String(arrayCaracteres).contains(String.valueOf(caracter)); // true
0 Likes

#5

@Fabio_V quando for postar código fonte, selecione-o na caixa de texto e selecione o ícone “</>” logo acima da caixa de texto. Assim seu código fica formatado e de fácil entendimento. Segue o exemplo:

E agora formatado:

char[] vetorDeComandos = {‘a’, ‘b’, ‘c’, ‘d’};

charNext(); (função que vai ler o inputUsuario) // Comentando com parênteses vai confundir. Comenta o código com  // ou /* no inicio e */ no final. 

while (!(Arrays.asList(vetorDeComandos).contains(InputUsuario))) {
System.out.println(“Comando inválido.”);
charNext();
}
0 Likes

#6

@smatt Obrigado pela dica, realmente nao sabia botar o codigo desse jeito

0 Likes