Kali ini saya akan memposting listing program java, mengenai String. Yang mungkin listing ini akan cukup di cari oleh orang-orang yang baru mempelajari bab String pada java.
Listing yang kali ini akan saya beberkan adalah program mencari banyaknya kata pada sebuah kalimat. Yang mungkin cukup jarang di temui. Dan bagi pemula yang baru masuk ke bab String, listing ini terasa cukup rumit. Selain lisitingnya, saya juga akan menjelaskan mengenai logikanya. Oke, langsung aja dech.. check this out..
import java.io.*;
public class carikata {
public static void main(String[] args)throws Exception {
DataInputStream in= new DataInputStream(System.in);
String words = "saya senang jika anda senang, saya sama anda sama sama senang";
System.out.println("Kalimat = " + words);
System.out.println("\nPanjang Kalimat di atas = "+words.length());
System.out.print("masukkan kata yang anda mau :");
String u=in.readLine();
int uk = 0;
for (int i = 1; i <=u.length(); i++) {
uk++;
}
int jml = 0;
for (int i = 0; i <= words.length()-uk; i++) {
if (u.equals(words.substring(i,i+uk))) {
jml++;
}
}
System.out.println("\n\nTerdapat " +jml+ " kata "+u+" pada kalimat diatas");
}
}
okey, setelah liat listing programnya, silakan di co-past.. dan coba di running, jangan lupa, nama filnya carikata.java
kalau udah liat, outputnya, sekarang saatnya kita berpusing-pusing ria, mempelajari logikanya.. check this out..
System.out.println("\nPanjang Kalimat di atas = "+words.length());
Words.length() = memiliki fungsi menghitung banyaknya character dalam suatu objek String, baik yang berupa huruf, angka, dan spasi.
System.out.print("masukkan kata yang anda mau :");
String u=in.readLine();
int uk = 0;
for (int i = 1; i <=u.length(); i++) {
uk++;
}
nah, kalau listing yang ini di gunakan untuk menginput data, dan kemudian, data yang di input, di baca, dan di jadikan nilai integer sesuai dengan banyaknya karakter yang kita masukkan.. misalnya, saya masukka kata “saya” maka, nilai variable baru yaitu int uk= 0, akan berubah menjadi 4, sesuai dengan banyaknya karakter pada input “saya”..
kok bisa berubah menjadi 4..??? nilai uk berubah menjadi 4 karena, adanya pengulangan pembacaan data. Pada u.length, Jadi jika ada 4 character pada String u, maka akan di lakukan pengulangan sebanyak 4 kali, maka nilai uk++ akan di tambahkan 4 kali, yang sebelumnya 0 menjadi 4..
ngerti nggak..??? kalau belum, coba gunakan logika kamu, untuk memahami program tersebut.
ok, kalau udah ngerti, lanjut ke listing berikutnya..
String words = "saya senang jika anda senang, saya sama anda sama sama senang";
System.out.println(“kalimat “);
int jml = 0;
for (int i = 0; i <= words.length()-4; i++) {
if (u.equals(words.substring(i,i+4))) {
jml++;
dengan adanya words.length maka nilai pengulangan for, akan di lakukan sesuai dengan banyaknya kata yang terdapat dalam variable String. Jadi jika ada 61 character, maka akan di lakukan pengulangan sebanyak 61 kali..
di bawah if, ada penambahan variable jml++, maka jika if tidak di tuliskan, nilai jml++ akan berubah menjadi 61. Sama seperti penambahan pada listing sebelumnya..
Nah.. penggunaan if (u.equals(words.substring(i,i+4))) { di tuliskan, artinya.. terdapat pengecualian, yaitu hanya akan terjadi pengulangan jika, String u ada yang sama dengan String words maka nilai jml akan di baca satu kali, kalau ada 2 kata “saya” pada kalimat String words, maka nilai jml akan di tambahkan 2 kali, menjadi 2. Dan kalau String u yang kita masukkan adaah “sama”, maka akan terjadi penambahan sebanyak 3 kali, dan nilai jml++ menjadi 3.
Sampai di sini sudah mengerti..???
Mungkin ada yang beda, dengan listing di atas,
for (int i = 0; i <= words.length()-4; i++) {
if (u.equals(words.substring(i,i+4))) {
jml++;
setelah words.length dan words.substring di cantumkan -4 dan +4 sedangkan pada listing yang pertama saya tulis, adalah –uk dan +uk. Saya tulis demikian, supaya pembaca bisa lebih mengerti, -4 dan +4 di tulis, untuk menyatakan panjang String u harus sama dengan 4. Misalnya “saya” “anda”, “sama”. Kalau kita masukkan input “senang” maka tidak akan bisa terjadi penghitungan kata. Atau lebih tepatnya syntaks error. Oleh karena itu, kita masukkan nilai –uk dan +uk, agar nilai yang kita masukkan fleksibel, kalau di tulis “saya” nilai uk adalah 4, kalau di tulis “senang” nilai uk akan menjadi 6. Demikian seterusnya. Sehingga berapa pun kata yang kita masukkan, akan bisa di hitung jumlahnya dalam program tersebut.
Mungkin cukup sampai di sini aja, penjelasan listing programnya, kalau ingin mengetahui, kenapa harus ada -4 dan +4. Silakan berlogika sendiri. Karena kalau saya jabarin lagi, akan cukup panjang.. so.. sampai jumpa di listing program selanjutnya..
System.out.println("....jangan lupa, setelah ngopy.. tuliskan comment, untuk menaikkan rating blog ini.....");
9 komentar:
masbro tolong di kasih dong sumber listing program aslinya.nanti tak lapor k HAKI nih :))
mantep bank, thx :D
makasi bos
mantab gan..
tp itu kan string ya?
klo kalimatnya diambil dari file.txt itu gmn ya?
muantabbb
oh ya gan, aq dah coba trus tak modif dikit klo kalimat itu hasil dari penggabungan kalimat yg dah displit koq ndak gelem yo?
Misal ne :
String[] kata=words.split(" ");
for(int x=0;x<kata.length;x++)
{
gabung+=kata[x]+" ";
}
trus bawahnya pake logika dari agan itu koq hasilnya 0 y!?
Mohon banget bantuannya gan!!
thanx
Mantabs bgt gan..
makasi bgt..
buar AIRA..
waduh telat banget nih, replynnya.. maklum jarang update,kyaknya u salah koding deh
String[] kata=words.split(" ");
for(int x=0;x<kata.length;x++)
{
gabung+=kata[x]+" ";
}
perulangannya kok ngindeks dari kata.length, length itu nulisnya length(), dan variabel kata juga datengnya darimana..? bukannya yg di deklarasiin array kata..? dan kenapa juga pake array.. nggak nggak ada yg perlu di tampung secara banyak..?
:|
Posting Komentar
untuk menggunakan emotion di bawah, silakan masukkan kode di samping emoltion.