É possível chamar um array dentro de um case? Para a solução anterior observei essa resposta Método CASE
Bom, eu não usei dessa forma, então creio que eu tenha respondido a pergunta. Mas como disse há vários posts
atrás: há várias formas de resolver. Você testou? Funciona? Ficou elegante? O código ficou limpo? Resolveu o seu problema?
Que eu saiba, os valores para os cases
devem ser dados constantes/estáticos, ou seja, devem ser informados em tempo de compilação. Como arrays são resolvidos em tempo de execução (quando o laço itera), então não podem ser usados arrays. Mas faça um teste em uma IDE, creio que ela irá gerar um aviso (erro) sobre isso.
A instrução de seleção múltipla switch realiza ações diferentes com base nos possíveis valores de uma expressão integral constante do tipo byte, short, int ou char, podendo admitir String e enumerações.
Fonte: Java Como Programar 8, pág. 129.
Tente assim. Vale dar uma lida em expressões regulares
// Tamanho da frase
System.out.println("Tamanho palavra: " + entrada.length());
// Espaço em branco não é letra. O \W limpar os não letras
System.out.println(“Total caracteres: " + entrada.replaceAll(”\W", “”).length());
// Remove tudo que não for vogal
System.out.println(“Total consoantes: " + entrada.replaceAll(”[^aeiou]", “”).length());
O “==” compara (no caso das Strings) o endereço de memória qual foi alocado para aquela String, por decorrência do famoso pool de Strings, o uso do “==” para a comparação de Strings não é recomendado. Por isso, o certo ao fazermos a comparação de Strings é usar um dos métodos da classe String, o “equals()”.
Reativar um topico dois anos depois para dizer algo que não se aplica?
Neste tópico o ==
é usado (corretamente) para comparar char
, não String
.
String a = "Uma string";
String b = "Uma" + " string";
if (a == b) { // false, apesar do mesmo conteudo, as strings são diferentes
(...)
Mas…
char a = 'x';
char b = 'w' + 1;
if (a == b) { // true, ambos tem o character x (ascii 0x78)
(...)