1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda em JAVA

Discussão em 'Programação' iniciada por Mr.Eko, 1 de Março de 2004. (Respostas: 7; Visualizações: 1889)

  1. Mr.Eko

    Mr.Eko Power Member

    É o seguinte: pretendo fazer um programa que abra ficheiros de texto e que leia caractér a caractér, para contar quantas letras há de cada letra do abecedário. As letras com acentos e outros caractéres especiais não contam.

    Já consigo fazer a leitura dos caractéres. O meu problema é arranjar agora uma solução simples para comparar o caractér que é lido com as letras do abecedário e armazenar a quantidade de cada letra que existe no texto.

    Sugestões? :)
     
  2. gutter

    gutter Power Member

    o abecedario tem k? 23 letras...

    um array de 23 posições iniciado todos a zero.

    a cada letra que les subtrais 'A' e ficas com um numero... esse numero serve pra indexar ao array onde increventas o valor.

    o array vai conter os contadores de cada letra.

    a posição 0 tem o A
    a posição 1 tem o B

    tipo les 'C', ao codigo ascii do 'C'.. se subtraires o codigo ascii do 'A', ficas com 2.. incrementas o valor do array da posição 2

    tas a ver +- o esquema acho....

    é uma possivel solução, agora tens que ver , é que em java é tudo unicode e nao ascii, nao tenho bem a certeza se estas contas servem, mas podes partir por aqui.
     
  3. Mr.Eko

    Mr.Eko Power Member

    É uma boa solução.

    Teria que fazer uma função que devolvesse o valor ASCII do caractér.

    Mas há outro problema: é que as letras maiusculas e as minusculas, apesar de serem as mesmas, têm valores diferentes. É boa solução criar um IF para verificar se a letra se encontra num ou noutro intervalo e depois fazer os cálculos?

    Thanks.
     
  4. Andr0m3da

    Andr0m3da Power Member

    primeiro faz o upper ou o lower como preferires de toda a string.


    gutter,
    a minha memória tá a falhar ou isto era um dos classicos trabalhos qd programação era C? ;)

    um abraço.
     
  5. SoundSurfer

    SoundSurfer Power Member

    xiii.. em C era fácil.. agora o JAVA anda muito verde...

    Mas a do array é boa ideia.
     
  6. Mr.Eko

    Mr.Eko Power Member

    Em C já fiz um parecido...mas era inserir caractéres na String após certas letras ou um grupo de letras, etc, etc. :)

    P.S.: Já agora, o programa já está feito. Thanks pela ajuda. :D
     
  7. gutter

    gutter Power Member

    por acaso fiz esse trabalho ou parecido em assembly (FM no ISEL), pelo menos foi o algoritmo que me lembrei na altura.
     
  8. nxo

    nxo Power Member

    qq coisa como

    Código:
    FileReader fr = new FileReader(File file) 
    long[] aCharCount = new long['z'-'a'+1];
    
    for (int i=0; i < 'z'-'a'+1; i++)
      aCharCount[i]=0;
    
    int ch = fr.read();
    while ( ch != -1 ) {
      if (ch >= 'a' and ch <= 'z')
        aCharCount[ch -'a'] += 1;
      else
      if (ch >= 'A' and ch <= 'Z')
        aCharCount[ch -'A'] += 1;
        
    
      ch = fr.read();
    }
    // a partir deste codigo tens o array preenchido com o q queres;
    
    claro q não foi testado, mas não deve variar muito disto.
    não fiz a passagem lower case pq não vale a pena; nem sequer pus isto a ler por strings, fica a ler apenas com os buffers internos.
     

Partilhar esta Página