Soru & Cevap

Javada karakter sayisi bulma ...

06.03.2015 - 03:21

Iyi gunler,

Benim sorunum su; java'da bir program yaziyorum. Program bir text dosyasini acip veya kullanicinin yazdigi bir cumlenin icerisinde kac tane kelime, toplam karakter sayisi, bosluk sayisi oldugunu bulup gosteriyor. Ihtiyacim olan hangi harften kac tane oldugunu da gostermesi. "Kelime icerisinde hangi harfi bulmak istiyorsun" degil de, mesela "hello world" cumlesinde h=1, e=1, l=3, o=2, w=1, r=1, d=1" seklinde. hashMap kullandim ancak bu sekilde butun karakterleri (noktalamalar ve ozel karakterler(%,&,{,[,})) de gosteriyor. Benim ihtiyacimsa sadece buyuk kucuk harf farketmeksizin hangi harften kac tane oldugu. GUI da jtextArea uzerinden analiz ediyorum cumleleri. Kullandigim compiler NetBeans. Cok tesekkur ederim simdiden.

3,255 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user mstfackglr
mstfackglr
12.03.2015 - 06:29

Arkadaslar hallettim derdimi. Eger isine yarayacak olursa, burdan alabilirler.

 

public static void main(String[] args) { 


    String sentence = "merhaba dunya. naaptin o isler?";
    sentence = sentence.toLowerCase();
// Bulmak istedigimiz karakterlerin haritasini cikariyoruz. Buraya istediginiz karakteri ekleyip cikarabilirsiniz.
// Ben sadece numara ve harfleri kullaniyorum.
    String indexes = "0123456789abcdefghijklmnopqrstuvwxyz.?";

//Initialize an array to the size of the possible matches.
    int[] count = new int[indexes.length()];
    
//Bulmak istedigimiz karakterleri kelimelerde aramak icin LOOP kullaniyoruz burada.
    for (int i = 0; i < sentence.length(); i++) {
    //Eger haritamizdaki karakterlerle uyusma varsa, karakter sayisini arttirir ve aramaya devam eder.
    int index = indexes.indexOf(sentence.charAt(i));

    //Eger aradigimiz karakterlerin hicbirini bulmazsak, yani girilen karakter haritada yoksa, system -1 gonderir.
    // ornek verecek olursak karakter olarak "<>.{};:@' gibi karakterler kullanirsak, bunlar haritamizda olmadigi icin bulmaz.
    if (index < 0)
        continue;

    count[index]++;

    }
    for (int i = 0; i < count.length; i++) {
    if (count[i] < 1)
        continue;

    System.out.println(String.format("%s (%d) %s",
            indexes.charAt(i),
            count[i],
            //Buradada buldugumuz karakter sayisi kadar * print yapmak icin bu kodu kullaniyoruz.
            new String(new char[count[i]]).replace('\0', '*')));
    }
}

Profile picture for user mstfackglr
mstfackglr
06.03.2015 - 10:10

Zamaniniz ve cevabiniz icin cok tesekkurler. Linklerdeki kodlar daha cok kelime sayimi icin. Ben kelime sayimini yazmistim ama linklerin birinde daha iyi bir kod vardi onunla degistirdim. Bana daha cok karakter sayimi lazim. Elimdeki kod HashMap ve ciktida butun karakterler gorunuyor ve karakterlerin isimlerini degistiremiyorum. Mesela kac satir oldugunu gosteriyor ama onu "Satir sayisi :" seklinde degistiremiyorum. Su an aklima butun karakterler icin bi for loop yazmak geliyor ama bu iyi bir kod degil. Cok fazla kodu bosuna yazmis olacagim. Daha cok mesela alfabeyi bir array icine yazip herbir karakteri tek tek bu array icinde saydirmak gibi birsey olabilir. Cevabin icin tekrar tesekkur ederim.