Contar caracteres

Oi, Nao consigo resolver este problema basico!
Quero contar o numero de caracteres minusculos que aparecem numa String introduzida pelo utilizador, mas que so aparecem 1 vez.
O que o meu codigo(em baixo) faz, e contar todas as minusculas que aparecem.
Gostaria de resolver este problema!
Obrigado.

Exemplo:
Se o utilizador digitar aaadjh.
O Output devia ser 3, porque o ‘a’ aparece mais do que 1 vez.
O meu codigo ta a contar sempre. No caso anterior tinha contado 6, e eu nao quero isso.

CODIGO:

char input[50];
char minus[] = “abcdefghijklmnopqrstuvwxyz”;
int contador = 0;

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

for(int j = 0;j < input.length();j++) {

  if(input[i] != minus[j]) {}

  else

contador++;
[/code]

vc tem q registrar os caracteres q jah foram contados… vc pode fazer isso usando um ArrayList e a classe Character pra poder gravar (jah q a classe ArrayList soh aceita objetos)…

e vc pode verificar se eh minusculo usando o metodo isLowerCase() da classe Character…

public int contaChar(String str){
 char array[] = new char[str.length()];
 ArrayList lista = new ArrayList();
 int num = 0;
 str.getChars(0, str.length(), array, 0);
 for (int i = 0; i < array.length; i++){
  if (Character.isLowerCase(array[i])){
   if (!jahTem(lista, array[i])){
    lista.add(new Character(array[i]));
    num++;
   }
  }
 }
 return num;
}
public boolean jahTem(ArrayList lista, Char c){
 int s = lista.size();
 for (int i = 0; i < s; i++){
  if (((Character)(lista.get(i))).charValue() == c) return true;
 }
 return false;
}

[quote=“Calavera”]Oi, Nao consigo resolver este problema basico!
Quero contar o numero de caracteres minusculos que aparecem numa String introduzida pelo utilizador, mas que so aparecem 1 vez.
O que o meu codigo(em baixo) faz, e contar todas as minusculas que aparecem.
Gostaria de resolver este problema!
Obrigado.

Exemplo:
Se o utilizador digitar aaadjh.
O Output devia ser 3, porque o ‘a’ aparece mais do que 1 vez.
O meu codigo ta a contar sempre. No caso anterior tinha contado 6, e eu nao quero isso.

CODIGO:

char input[50];
char minus[] = “abcdefghijklmnopqrstuvwxyz”;
int contador = 0;

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

for(int j = 0;j < input.length();j++) {

  if(input[i] != minus[j]) {}

  else

contador++;
[/code][/quote]

Faz uma String pra contar os caracteres.
Sempre que voce encontrar um caractere, voce adiciona ele na String…logo String.indexOf(letra) > 0 é por que já foi contado o caractere.

[quote=“Felipe”]vc tem q registrar os caracteres q jah foram contados… vc pode fazer isso usando um ArrayList e a classe Character pra poder gravar (jah q a classe ArrayList soh aceita objetos)…

[/quote]

Usando generics no tiger isso ja nao acontece mais. agora a gente pode dizer às collections que tipo de dados elas podem aceitar …

Utilize um java.util.Set para armazenar os char convertidos para String. O Set não duplica elementos. Diferente de java.util.List que permite elementos duplicados