Preciso de ajuda em uma questão[RESOLVIDA}

É 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?

1 curtida

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.

1 curtida

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)
(...)