MODUL XIV,PBO 1

CLASS STRING (Character Class)
 

TUJUAN:
Mahasiswa mampu menggunakan fiatur kelas string
TEORI SINGKAT:
String berisi deretan karakter. Dalam platform Java, String adalah berbentuk kelas, yag berada pada package java.lang.
Cara untuk menciptakan string:
String ucapan=”Selamat Datang”;
Seperti halnya objek lainnya, kita dapat menciptakan objek String dengan menggunakan keyword new dan konstruktor. Kelas String mempunyai 13 konstruktor untuk memberi nilai awal objek String.
Char[] haloLarik={‘h’,’a’,’l’,’l’,’o’};
String haloString= new String(haloLarik);
System.out.println(haloString);
Kelas String bersifat immutable, sehingga sekali diciptakan, objek string itu tidak dapat diubah. Kelas String mempunyai sejumlah method untuk memodifikasi string. Namun, karena string bersifat immutable, method-method tersebut bersifat menciptakan string baru yang berisi hasil operasi.
PELAKSANAAN PRAKTIKUM:
Listing program 1. StringDemo.java
public class StringDemo{
     public static void main(String[]args){
       String palidrome=”Ana lihat katak”;
       int len=palidrome. length();
       char[] tempCharArray=new char[len];
       char[] charArray=new char[len];
       //tempatkan string asli ek dalam array
       for (int i=0; i
            tempCharArray[i]=palidrome.charAt(i);
       }
       //balik array
       for (int j=0; j
            charArray[j]=tempCharArray[len-1-j];
       }
       System.out.println(palidrome);
       String palidromeDibalik=new String(charArray);
       System.out.println(palidromeDibalik);
     }
}
Pembahasan praktek
Pada listing di atas kita langsung menggunakan method main agar sekaligus prorgam ini dapat disaksikan hasilnya. Variabel string yang didefinisikan adalah palidrome dengan value / isinya adalah kalimat “Ana lihat katak”. Variabel kedua yaitu turunan dari variabel palidroma yang bertipe string diturunkan menjadi variabel len dengan tipe integer. Statemen palidrome.length() adalah melakukan penghitungan terhadap banyaknya karakter/huruf pada variabel palidrome, sehingga variabel len menjadi sebuah vaiabel integer sebesar panjang karakter pada variabel palidroma.
Dua buah perintah yang fungsinya sama selanjutnya adalah sebuah perintah untuk menciptakan 2 buah variabel bernama tempCharArray dan satu lagi bernama charArray merupakan pendefinisian variabel array dengan maksimal array yang ditampung sebesar len yaitu banyaknya karakter pada variabel palidrome yang dihitung dengan statemen length() di atas).
Untuk menempatkan nilai-nilai karakter tersebut kita menggunakan proses looping dengan if dimana indikator perulangan kita ambilkan dari banyaknya karakter (variabel len). Kita akan menempatkan pada variabel array yang terdifinisi pada tempCharArray[]. Sehingga ketika terjadi perulangan for pada i=0 maka tempCHarArray[0] akan terisi karakter “A”. Demikian selanjutnya sampai pada tempCharArray[14]. Kita gunakan bilangan 14 dengan memberikan indikator i
Untuk selanjutnya kita akan mengisikan variabel charArray dengan proses looping for juga, namun pengambilan karakternya kita balik. Pembalikan tersebut terletak pada nilai (len-1-j) sehingga variabel array yang dibentuk akan diproses angka array yang tertinggi, kemudian secara bertahap satu-demi satu karakter sebelumnya dimasukkan ke array di bawahnya. Fungsi dari looping for ini bisa dikatakan sebagai konstruktor juga, karena dengan proses tersebut maka variabel array terisi dengan karakter yang ditunjukkan oleh proses looping.
Terakhir adalah proses menampilkan kedua variabel array di atas, baik tempCharArray[] maupun charArray[].
Dengan langsung memanggil variabel palidrome pada statemen System.out.println(palidrome); Sedangkan untuk memanggil hasil operasi for untuk memasukkan data terbalik dari ariabel array palidrome terlebih dahulu membuat kelas method dengan menjadikan charArrry sebagai parameter dari kelas String, baru kemudian objek hasil bentukan tadi dapat dipanggil yaitu “palidromeDibalik”. Hasilnya sebagaimana di bawah ini kalimat “Ana lihat katak” dibalik menjadi “katak tahil anA”.
Hasil Running Program:
Dengan menambahkan statemen sebagaimana di bawah ini:
String gabung=palidrome.concat(“tadi alam.”);
System.out.println(gabung);
String gabung2=palidrome +” bersama Ani”;
System.out.println(gabung2);
Pada penambahan statemen di atas adalah digunakan untuk memanipulasi dalam menampilkan variabel string pada kelas string. String gabung adalah pendefinisian variabel gabung bertipe string dan mengisinya dengan value variabel palidrome dengan menambahkan di akhir data string palidrome (perintah.concat) dengan kata-kata yang berada di dalam statemen kurung (“tadi malam”);.  Sehingga kalimat Ana lihat kataktadi malam. Tidak ada spasi antara katak dengan tadi (kataktadi) karena pada saat mengetikkan parameter pada System.out.print(“tadi alam) juga tidak ada spasinya. Mesinya dituliskan sebagai berikut: (“ tadu malam”), ada spasi antara tanda “ dengan tadi.
Kemudian pada penciptaan objek string ke dua yaitu gabung2 mengambil value dari variabel palidrome dengan operator + ditambahkan string “ bersama Ani”;. Artinya kalimat “Ana lihat katak” + “bersama Ani” sehingga menjadi “Ana lihat katak bersama Ani”. Dan pada saat ditampilkan dengan perintah System.out.println(gabung2) maka yang muncul adalah “Ana lihat katak bersama Ani”. Dapat kita lihat sebagaimana di bawah ini.
Hasilnya menjadi:
Membuat program baru StringBilangan.java
public class StringBilangan{
     public static void main(String[]args){
       //program ini butuh dua argumen pada command line
       if (args.length==2){
            //konversi string ke bilangan
            float a=(Float.valueOf(args[0])).floatValue();
            float b=(Float.valueOf(args[1])).floatValue();
            //kerjakan opeasi aritmatika
            System.out.println(“a + b = ” + (a+b));
            System.out.println(“a – b = ” + (a-b));
            System.out.println(“a * b = ” + (a*b));
            System.out.println(“a / b = ” + (a/b));
            System.out.println(“a % b = ” + (a%b));
       }
       else {
            System.out.println(“Memerlukan dua argumen command-line.!”);
       }
     }
}
Membuat program StringBilangan.java akan menunjukkan bagaimana cara kita dalam melakukan konversi dari suatu text menjadi bilangan. Agar tidak terjadi kesalahan dalam memasukkan parameter maka disini kita memberikan statemen if dengan syarat bahwa panjang argumen adalah sebanyak 2  sebagaimana disebut “if (args.length==3)”. Dengan indikator ini maka jika kita tidak memberikan parameter atau mungkin dalam menuliskan parameter terlalu banyak sehingga lebih dari 2 maka statemen yang dijalankan bukan statemen menampilkan hasil operasi.
Untuk mengambil data parameter yang bertipe string menjadi bilangan maka kita definisikan sekaligus pada saat pendifinisikan nilai variabel a, dan b yang kita ambil dari variabel string parameter. Perintah yang digunakan adalah
float a=(Float.valueOf(args[0])).floatValue();
float b=(Float.valueOf(args[1])).floatValue();
artinya, bahwa data variabel a dan b bertipe float akan didapatkan dari masing-masing adalah argumen (args[0] array 1) yang diubah menjadi float dengan (Float.valueOf(args[0])).floatValue90; menjadi variabel foat a. Demikian juga yang pada variabel b.
Dengan demikian variabel a dan b sudah menjadi variabel bertipe float. Sebagai tanda bahwa variabel a dan b adalah variabel bertipe float adalah kemampuan bilangan tersebut dikenai operasi matematis seperti penjumlahan, pengurangan, perkalian, pembagian, dan operasi lainnya.
Maka pada program ini kemudian dipergunakanlah dua bilangan a dan b tersebut pada operasi sebagaimana di bawah ini:
System.out.println(“a + b = ” + (a+b);    //Penambahan
System.out.println(“a – b = ” + (a-b));   //Pengurangan
System.out.println(“a * b = ” + (a*b));   //Pengalian
System.out.println(“a / b = ” + (a/b));   //Pembagian
System.out.println(“a % b = ” + (a%b));   //Sisa habis bagi
Ketika kita eksekusi langsung pada program java tidak berhasil karena pada statemen kelas ini memerlukan dua buah argumen. Maka kita coba eksekusi diluar / pada dos prompt dengan memberkan dua argumen sebagaimana ditampilkan di bawah ini.
Sekarang coba buka melalui Command prompt:
Sebagai mana berikut:
Java StringBilangan 4.56 7.65
Java StringBilangan 10.2 5.345
Membuat class baru BilanganString.java
public class BilanganString{
     public static void main(String [] args){
       double b=858.48;
       String s=Double.toString(b);
       int dot=s.indexOf(‘.’);
       System.out.println(“Bilangan “+s+” adalah :”);
       System.out.println(dot+” digit sebelum titik desimal.”);
       System.out.println((s.length() – dot – 1) + “digit setelah itik desimal.”);
     }
}
Kelas ini merupakan program untuk mengkonversi suatu bilangan menjadi string yang kemudian dimanfaatkan untuk mendapatkan hitungan banyaknya digit suatu bilangan yang berada di depan maupun dibelakang koma. Variabel b yang didefinisikan sebagai tipe variabel double sehingga dapat diisi dengan bilangan pecahan dengan batas 32 digit. Kemudian dikonversi menjadi string dengan perintah toString(b) dan pada baris yang sama sekaligus meletakkan hasil konversian bilangan menjadi string tersebut ke dalam variabel s. Sehingga value variabel s adalah 858.48 namun bukan bilangan tetapi dalam string dan bila kita coba menggunakan variabel tersebut pada operasi matematis maka tidak akan bisa.
Statemen selanjutnya yaitu int dot=s.indexOf(‘.’); sebagai menghitung atau mengindex letak karakter ‘.’ pada angka-angka 858.48 yang sudah bernilai karakter untuk kemudian menyimpannya ke dalam variabel dot. Dengan maksud bahwa index karakter ‘.’ akan memberikan informasi letak koma di dalam deret karakter angka tersebut berada di mana. Jika dot memberikan informasi bahwa karakter ‘.’ berada pada index ke 4 (penghitungan mulai dari 0), maka informasi yang diberikan adalah 3 digit bukan 4 digit.
Untuk menampilkan tidak masalah lagi, tinggal kita melakukan pemanggilan terhadap variabel-variabel yang terdefinisi. Yaitu untuk memanggil 858.48 kita dapat menggunakan s maupun b juga tidak masalah. Sedangkan dot digunakan untuk memanggil letak karakter ‘.’ dalam variabel tipe integer, sedangkan untuk mengetahui berapa titik di belakang koma kita gunakan sifat kebalikan dari hukum penjumlahan, dimana panjang karakter dapat dikurangi banyaknya digit karakter bilangan tersebut dikurangi 1 karena kita tahu bahwa penghitungan index maupun array dalam java dimulai dengan 0. Selesai sudah script di atas dapat kita lihat hasilnya sebagaimana di bawah ini.
Hasil running program:
Membuat listing program class NamaFile.java:
public class NamaFile{
     private String fullPath;
     private char pemisahPath, pemisahExtension;
     public NamaFile(String str, char pemisah, char extension) {
       fullPath=str;
       pemisahPath=pemisah;
       pemisahExtension=extension;
     }
     public String extension(){
       int dot=fullPath.lastIndexOf(pemisahExtension);
       return fullPath.substring(dot+1);
     }
     //ambil nama file tanpa extension
     public String namaFile(){
       int dot=fullPath.lastIndexOf(pemisahExtension);
       int pemisah=fullPath.lastIndexOf(pemisahPath);
       return fullPath.substring(pemisah + 1, dot);
     }
     public String path(){
       int pemisah=fullPath.lastIndexOf(pemisahPath);
       return fullPath.substring(0, pemisah);
     }
}
Membuat file pemanggil  TestNamaFile.java
public class TestNamaFile{
     public static void main(String[] args){
       final String FPATH=”/home/mem/index.html”;
       NamaFile myHomePage=new NamaFile(FPATH,’/’,’.’);
       System.out.println (“Full path = ” +FPATH);
       System.out.println (“Extension = ” +myHomePage.extension());
       System.out.println (“Nama File = ” +myHomePage.namaFile());
       System.out.println (“Path      = ” +myHomePage.path());
     }
}
Untuk listring di atas, merupakan manipula method-method string yang dipergunakan untuk mengetahui bagian-bagian suatu file dengan melihat karakter penyusunnya. Ada dua buah class, dimana kelas NamaFile adalah kelas untuk mendefinisikan method identifier sedangkan TestNamaFile digunakan untuk melakukan pemanggilan terhadap method-method yang didefinisikan pada kelas NamaFile.
Dalam file class NamaFile diciptakan konstruktor dengan parameter String str, char pemisah, char extension yang dipergunakan untuk mendefinisikan variabel fullPath, pemisahPath dan pemisahExtension.
Method yang diciptakan adalah  method getter dengan return value semuanya String yang menggunakan beberapa pola manipulasi string tersebut menjadi integer dan kemudian menggunakan angka-angka posisi karakter untuk mengambil beberapa karakter yang diinginkan. Sebagaimana penjelasan kami satu per satu method terkait pada class NamaFile.
public String extension(){
int dot=fullPath.lastIndexOf(pemisahExtension);
return fullPath.substring(dot+1);
}
Method ini bernama extension termasuk getter method yang menggunakan variabel pemisahExtension sebagai indikator untuk mengetahui posisi suatu karakter khusus di dalam parameter konstruktor yaitu karkater ‘.’ titik. Dengan mendapatkan posisi index namun dihitung dari belakang sehingga mengetahui dimana posisi tanda titik tersebut. Dengan diketahui letak tanda titik tersebut maka kita dapat melakukan pemanggilan pada sebagian string dari fullPath yang terdifinisi sebagai str pada konstruktor di atas. Dan wal hasil method extension ini menapilkan karakter dari belakang sebelum method ini menemukan tanda titik.
public String namaFile(){
int dot=fullPath.lastIndexOf(pemisahExtension);
int pemisah=fullPath.lastIndexOf(pemisahPath);
return fullPath.substring(pemisah + 1, dot);
}
Pada method namaFile ini akan menampilkan nama file dengan mengidentifikasi karakter khusus yang didefinisikan pada  konstruktor yaitu ‘/’dan ‘.’ yang disebut dengan nama variabel pemisahExtension dan pemisahPath. Dan ini dimanfaatkan dengan mengkonversi posisi karakter tersebut ke dalam bilangan integer dan didefinisikan ke dalam variabel dot dan pemisah. Dengan mendapatkan bilangan integer dot dan pemisah sebagai index dari String  fullPath tersebut kita dapat mengambil substring dari fullPath dengan menuliskan pada paraeter method substring(pemisah+1,dot) dimana pemisah adalah index awal pengambilan karakter dan dot adalah index karakter akhir yang diambil. Sehingga kita akan mendapatkan nama file yang dimaksud adalah karakter diantara tanda ‘/’ dan tanda ‘.’.
public String path(){
     int pemisah=fullPath.lastIndexOf(pemisahPath);
     return fullPath.substring(0, pemisah);
     }
}
Yang terakhir adalah method untuk megetahui posisi path (direktori dimana file tersebut di simpan). Ini sama sederhananya dengan pengambilan string dari variabel str / fullPath. Cukup dengan method substring(0,pemisah). Parameter pemisah ini diperoleh dari index karakter ‘/’ yang diperoleh dengan menghitung dari belakang karena jika dari depan jika sebagaimana kasus fullPath ini ada beberapa tanda ‘/’ tentu saja akan keliru dalam menuliskan return hasil method path() ini. Dengan demikian maka method ini akan menuliskan karakter demi karakter mulai dari index ke 0 sampai ke tanda ‘/’.
Membahas pada script class TestNamaFile sebagaimana beberapa praktikum sebelumnya. Pertama menuliskan variabel string FPATH yang berisi file dan alamat di dalam suatu storage. Kemudian untuk memanggil method dari kelas lain maka perlu mendefinisikan objek dari kelas NamaFile dengan nama myHomePage yang kemudian kita gunakan untuk memanggil satu per satu method pada class NamaFile yaitu extension (untuk memanggil substring(dot+1) dari string fullPath dihitung dari belakang), namaFile untuk memanggil substring(pemisah+1,dot), dan path (untuk memanggil substring(0,pemisah). Hasilnya sebagai berikut:
Hasil Running Program:
TUGAS:
Buatlah program yang dapat menghitung cacah kata dari suatu kalimat. Andaikan kalimat=”Saya suka nasi goreng yang tidak pedas”. Maka program akan memberikan hasil:
Kalimat =  Saya suka nasi goreng yang tidak pedas.
Terdiri atas kata-kata:
saya
suka
nasi
goreng
yang
tidak
pedas
Cacah kata=7
Jawab:
public class CacahKalimat{
     public static void main(String[]args){
       String kalimat=”Saya suka nasi goreng yang tidak pedas dan tidak juga berminyak”;
       int kata=kalimat.length();
       int cacah=1;
       char[] Huruf=new char[kata];
       for (int i=0; i
            Huruf[i]=kalimat.charAt(i);
       }
       System.out.println(“Kalimat = “+kalimat);
       System.out.println(“==========================”);
                  for (int i=0; i
                  if (Huruf [i]==’ ‘)
                        {System.out.println(” “);
                        cacah=cacah+1;}
                        else
                        System.out.print(Huruf[i]);
                  }
       System.out.println(“”);
       System.out.println(“==========================”);
       System.out.println(“Cacah Kata = “+cacah);
       System.out.println(“==========================”);
     }
}
Hasil Running Program:
Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s