Galera estou precisando de ajuda. Como faço para contar quantos caracteres especiais tenho em uma palavra

public class Atividade{
public static void main(String [] args){

    Scanner ler;
    String nome;
   
    int cont;
    ler = new Scanner(System.in);
   
    System.out.print("Digite uma palavra de até 4 caracteres: ");
    nome = ler.nextLine();
    
    


for(int i = 0; i < nome.length(); i++){ 
String c = String.valueOf(nome.charAt(i));

if(c.equalsIgnoreCase("%") || c.equalsIgnoreCase("-") || c.equalsIgnoreCase("*") || c.equalsIgnoreCase(";") || c.equalsIgnoreCase(":"))

cont++;



}    

 
 System.out.println("Caracteres especiais: " +cont);     

}

}
}

O que eu faço ?? tem Algum método especifico para isso ?

Você pode fazer da seguinte maneira:

Neste caso passamos um Arrays contendo os caracteres especiais para o metodo “compile” da classe Pattern. Após, utilizamos o método “matcher” para realizar a contagem de ocorrências. Sua classe ficaria da seguinte maneira:

package teste;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Atividade {

public static void main(String[] args) {

	Scanner ler;
    String nome;
   
    ler = new Scanner(System.in);
   
    System.out.print("Digite uma palavra de até 4 caracteres: ");
    nome = ler.nextLine();
    
    
    Pattern pattern = Pattern.compile("[!@#$%&*()]");
	Matcher matcher = pattern.matcher(nome);
	
	int count = 0;
	while (matcher.find()) {
	    count++;
	}
	  
	System.out.println(count);
    



}    

}

1 curtida