Tugas Struktur Data - Operasi String

download Tugas Struktur Data - Operasi String

of 43

Transcript of Tugas Struktur Data - Operasi String

MAKALAH STRUKTUR DATAOperasi String

Kelompok 1 : Ardiono Roma Nugraha (51413249)Brizky Ramadhani Ismanto (51413794)David Martianus (52413053)Fahda Herliana (53413067)Heraldy Septarianto (54413051)Ivana Elisa Kurnia Sari (54413581)Mohammad Risnawan Budianto (55413639)Muhammad Khahfi (56413015)

UNIVERSITAS GUNADARMA2014

I. PEMBAHASAN

A. Konsep StringString adalah deretan karakter. string juga merupakan salah satu kelas dasar yang disediakan oleh java untuk manipulasi karakter. Kelas string digunakan untuk mendefinisikan string yang constant(tidak bias berubah).Didalam Java, string diperlakukan sebagai suatu objek. Kita akan membahas salah satu kelas yang terdapat dalam string yaitu kelas String. String juga merupakan rangkaian karakter yang sifatnya immutable (readonly). String dalam java adalah objek. Dapat dibentuk dengan atau tanpa perintah new. Beberapa method yang dapat digunakan.Dalam pemrograman Java string merupakan aspek penting, karena dapat mempelajari mengenai class dan objek melalui penggunaan string. String sebenarnya merupakan class yang terdapat dalam library Java. Java String merupakan salah satu kelas dasar yang disediakan oleh Java untuk memanipulasi karakter.

B. Operasi StringAda beberapa tipe data string yang dapat dilakukan. Untuk lebih mudahnya, perhatikan NPM berikut ini:

Untuk memenggal-menggal (mendapatkan penggalan NPM), maka operasi yang tersedia di struktur data adalah: substring. Bentuk umumnya adalah: substring(variable, mulai karakter ke, banyaknya).Contoh 1:npm = 51408257 th = substring(NPM,4,2)

maka, nilai dari variabel th=08Contoh 2: npm = 51408257 fak = substring(NPM,1,1)

maka, nilai dari variabel fak = 5

Perhatikan, bahwa isi dari variabel yang berjenis string, dalam penulisannya diberi sepasang tanda kutip. Boleh sepasang tanda kutip tunggal atau sepasang tanda kutip ganda (tergantung bahasa pemrogramannya). Setiap nilai di dalam variabel string (di antara tanda kutip) akan dibaca, termasuk bila ada karakter kosong (blank). Di dalam bahasa pemrograman, perintah untuk melakukan pemenggalan data bisa dilakukan dengan berbagai cara atau berbagai perintah (perhatikan bahasa pemrograman yang Anda gunakan). Ada bahasa pemrograman yang menyediakan perintah untuk melakukan penggalan dari kiri. Contoh:A = GunadarmaB = left(A,4)Maka, nilai B = GunaAda juga yang menyediakan perintah untuk memenggal string dari kanan.Contoh:A = GunadarmaB = right(A,5)Maka, nilai B = darma

Perintah untuk menuliskan substring di berbagai bahasa pemrograman bisa berbeda-beda, namun yang paling penting adalah perhatikan bentuk umum penulisannya. Misalkan ada yang menggunakan perintah SUBS(string,m,n), di mana m = mulai karakter ke berapa, dan n adalah banyaknya karakter yang diambil, ada yang menggunakan perintah COPY, dan sebagainya.

Banyaknya karakter di dalam sebuah string dapat diketahui dengan operasi length. Contoh operasi length:teks = My father is the professorpanj = length(teks)Maka, nilai panj = 26

Perhatikan, bahwa hasil perintah length bernilai numerik (bukan string) sehingga variabel panj tersebut selanjutnya bisa dioperasikan secara matematis. Ada bahasa pemrograman yang menuliskan perintah ini hanya dengan perintah LEN(string).

Kadang, kita memerlukan penggabungan dari dua string atau lebih. Operasi yang diperlukan untuk itu adalah concatenation. Karena panjang, operasi itu secara teori dapat diperpendek dengan kata concate saja atau lambang //.Contoh: teks1 = Universitasteks2 = Gunadarmateks3 = has1 = concate(teks1, teks2)has2 = teks1//teks3//teks2

Maka, hasil untuk has1 = UniversitasGunadarma has2 = Universitas Gunadarma

Sedangkan operasi yang digunakan untuk mencari posisi awal dari suatu substring di dalam sebuah string adalah index. Hasil dari operasi ini bernilai numerik (integer) yang merupakan substring pertama yang ditemukan dari kiri dari string.Contoh; teks = My father is the professorsubteks thehas = index(teks, subteks)Maka, nilai has = 6.

WORD PROCESSOR (PENGOLAH KATA)Pengolah kata merupakan tingkat lanjut dari operasi string. Beberapa operasi terhadap kata adalah penggantian (replacement), penyisipan (insertion), dan penghapusan (deletion). Hampir di semua bahasa pemrograman tidak menyediakan perintah ini secara langsung. Perintah ini biasa disediakan di program aplikasi pengolah kata (word processor).Contoh: teks1 = University Gunadarmateks2 = Jl. Margo Raya 1000, Depokteks3 = tyteks4 = tas has1 = replace(teks1, teks3, teks4)has2 = insert(teks2, 9, nda)has3 = delete(teks2, 17, 1)

Hasilnya: has1 = Universitas Gunadarmahas2 = Jl. Margonda Raya 1000, Depokhas3 = Jl. Margo Raya 100, Depok

Di dalam operasi string, perintah replace bisa diganti dengan beberapa cara, misalkan:teks1 = University Gunadarmateks3 = tyteks4 = tashas1 = left(teks1,8)+teks4+right(teks1, 10)Hasilnya, has1 = Universitas Gunadarma

Atau

teks1 = University Gunadarmateks3 = tyteks4 = taspos = index(teks1,3)has1 = left(teks1,pos)+teks4+right(teks1, 10)Di dalam operasi string, perintah delete bisa diganti dengan cara, misalkan:teks1 = Universitasy Gunadarmahas1=left(teks1,11)+right(teks1,10)Hasilnya has1 = Universitas GunadarmaDi dalam operasi string, perintah insert bisa diganti dengan cara, misalkan:teks1 = Unirsitas Gunadarmateks2 = vehas1=left(teks1,3)+teks2+right(teks1,10)Hasilnya has1 = Universitas Gunadarma

II. LIST PROGRAMpackage stukturdata;import javax.swing.*;/** * * @author Kelompok 1 */public class ViewSD extends javax.swing.JFrame { String S1, S2, S3, S4, hasil; int a, b, c; public ViewSD() { initComponents(); }

@SuppressWarnings("unchecked") // private void initComponents() {

jLabel1 = new javax.swing.JLabel(); tS3 = new javax.swing.JTextField(); tS4 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); tI1 = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); bLen = new javax.swing.JButton(); bConcat = new javax.swing.JButton(); bSubString = new javax.swing.JButton(); bInsert = new javax.swing.JButton(); bDelete = new javax.swing.JButton(); tHasil = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); tI2 = new javax.swing.JTextField(); bHapus = new javax.swing.JButton(); background1 = new stukturdata.Background(); tS1 = new javax.swing.JTextField(); tS2 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Kelompok 1"); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel1.setFont(new java.awt.Font("Gungsuh", 1, 24)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Operasi String"); getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 660, 72));

tS3.setEditable(false); getContentPane().add(tS3, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 90, 176, -1));

tS4.setEditable(false); getContentPane().add(tS4, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 128, 176, -1));

jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel2.setText("String 1 :"); getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 93, -1, -1));

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel3.setText("String 2 :"); getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 131, -1, -1));

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel4.setText("String 3 :"); getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 90, -1, -1));

jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel5.setText("String 4 :"); getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 130, -1, -1));

tI1.setEditable(false); getContentPane().add(tI1, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 90, 34, -1));

jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel6.setText("Integer 1 :"); getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 90, -1, -1));

bLen.setText("Len ( )"); bLen.setToolTipText("\nLen( )\n\ndalah suatu operasi string yang menghitung jumlah karater yang ada pada string.\nFormat : [ String 1 ] \n \n A"); bLen.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bLen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bLenActionPerformed(evt); } }); getContentPane().add(bLen, new org.netbeans.lib.awtextra.AbsoluteConstraints(164, 209, 92, -1));

bConcat.setText("ConCat ( )"); bConcat.setToolTipText("\nConcat( )\n\nAdalah suatu operasi string yang menambahkan String 1 dengan String 2.\nFormat : [ String 1 ] [ String 2 ] [ (Jumlah spasi) ]\n \n"); bConcat.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bConcat.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bConcatActionPerformed(evt); } }); getContentPane().add(bConcat, new org.netbeans.lib.awtextra.AbsoluteConstraints(213, 238, 92, -1));

bSubString.setText("SubString ( )"); bSubString.setToolTipText("\nSubstring( )\n\nAdalah suatu operasi string yang mengambil sejumlah karakter pada string 1 dimulai pada titik tertentu.\nFormat : [ String 1 ] [ Di Mulai dari Karakter ke-i ] [ Jumlah Karakter ]\n \n"); bSubString.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bSubString.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bSubStringActionPerformed(evt); } }); getContentPane().add(bSubString, new org.netbeans.lib.awtextra.AbsoluteConstraints(311, 238, -1, -1));

bInsert.setText("Insert ( )"); bInsert.setToolTipText("\nInsert( )\n\nAdalah suatu operasi string yang menyisipkan String 2 ke String 1 pada titik tertentu di String 1\nFormat : [ String 1 ] [ String 2 ] [ Di Mulai dari Karakter Ke - i ] [ Jumlah Karakter ]\n \n"); bInsert.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bInsert.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bInsertActionPerformed(evt); } }); getContentPane().add(bInsert, new org.netbeans.lib.awtextra.AbsoluteConstraints(262, 209, 92, -1));

bDelete.setText("Delete ( )"); bDelete.setToolTipText("\nDelete( )\n\nAdalah suatu operasi string yang menghapus string 1 dimulai dari titik tertentu sebanyak jumlah karakter yang diinginkan.\nFormat : [ String 1 ] [ Di Mulai dari Karakter ke-i ] [ Jumlah Karakter ]\n \n"); bDelete.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bDeleteActionPerformed(evt); } }); getContentPane().add(bDelete, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 209, 93, -1));

tHasil.setEditable(false); tHasil.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N tHasil.setHorizontalAlignment(javax.swing.JTextField.CENTER); tHasil.setToolTipText(""); getContentPane().add(tHasil, new org.netbeans.lib.awtextra.AbsoluteConstraints(228, 161, 225, 37));

jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel7.setText("Integer 2 :"); getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 130, -1, -1));

tI2.setEditable(false); getContentPane().add(tI2, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 130, 34, -1));

bHapus.setText("Hapus"); bHapus.setToolTipText("\nHapus\n\nAdalah perintah untuk mengosongkan isi yang ada pada string 3, string 4, integer 1, integer 2 dan hasil.\n\n"); bHapus.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); bHapus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bHapusActionPerformed(evt); } }); getContentPane().add(bHapus, new org.netbeans.lib.awtextra.AbsoluteConstraints(560, 190, 78, -1));

background1.setToolTipText("\nKelompok 1\n\n

  1. Mohammad Risnawan Budianto

\n

  1. Muhammad Khahfi

\n

  1. Ivana Elisa Kurnia Sari

\n

  1. Fahda Herliana

\n

  1. Ardiono Roma Nugraha

\n

  1. Heraldy Septarianto

\n

  1. David Martianus

\n

  1. Brizky Ramadhani Ismanto

\n \n");

javax.swing.GroupLayout background1Layout = new javax.swing.GroupLayout(background1); background1.setLayout(background1Layout); background1Layout.setHorizontalGroup( background1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(background1Layout.createSequentialGroup() .addContainerGap(75, Short.MAX_VALUE) .addGroup(background1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tS1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tS2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); background1Layout.setVerticalGroup( background1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(background1Layout.createSequentialGroup() .addGap(90, 90, 90) .addComponent(tS1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(tS2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(159, Short.MAX_VALUE)) );

getContentPane().add(background1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 260, 300));

pack(); }//

static String question(String[] pilih){ String str = (String) JOptionPane.showInputDialog( null, "Daftar Pilihan", "Mari-Mari Silahkan dipilih", JOptionPane.QUESTION_MESSAGE, new ImageIcon("src/Thumb_UP.png"), pilih, pilih[0]); return str; } private void simpanString() { String[] pilihan = new String[]{"=== Silahkan Pilih ===", "String 3", "String 4"}; String pilih = question(pilihan); if (pilih == "String 3") { tS3.setText(tHasil.getText()); } else if (pilih == "String 4") { tS4.setText(tHasil.getText()); } else if (pilih == "=== Silahkan Pilih ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); simpanString(); } } private void simpanInt() { String[] pilihan = new String[]{"=== Silahkan Pilih ===", "Integer 1", "Integer 2"}; String pilih = question(pilihan); if (pilih == "Integer 1") { tI1.setText(tHasil.getText()); } else if (pilih == "Integer 2") { tI2.setText(tHasil.getText()); } else if (pilih == "=== Silahkan Pilih ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); simpanInt(); } } private void pilihKalimat1() { String[] pilihan = new String[]{"=== Silahkan Pilih Kalimat 1===", "String 1", "String 2", "String 3", "String 4", "Hasil", "Manual"}; String pilih = question(pilihan); if (pilih == "String 1") { if (tS1.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 1 Wajib Diisi"); pilihKalimat1(); } else { S1 = tS1.getText(); } } else if (pilih == "String 2") { if (tS2.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 2 Wajib Diisi"); pilihKalimat1(); } else { S1 = tS2.getText(); } } else if (pilih == "String 3") { if (tS3.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 3 Belum Terisi"); pilihKalimat1(); } else { S1 = tS3.getText(); } } else if (pilih == "String 4") { if (tS4.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 4 Belum Terisi"); pilihKalimat1(); } else { S1 = tS4.getText(); } } else if (pilih == "Hasil") { if (tHasil.getText().equals("")) { JOptionPane.showMessageDialog(null, "Belum Ada Hasil"); pilihKalimat1(); } else { S1 = tHasil.getText(); } } else if (pilih == "Manual") { S1 = JOptionPane.showInputDialog(null,"Silahkan Masukkan Kalimat 1"); } else { JOptionPane.showMessageDialog(null, "Silahkan Pilih String 1"); pilihKalimat1(); } } private void pilihKalimat2() { String[] pilihan = new String[]{"=== Silahkan Pilih Kalimat 2===", "String 1", "String 2", "String 3", "String 4", "Hasil", "Manual"}; String pilih = question(pilihan); if (pilih == "String 1") { if (tS1.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 1 Wajib Diisi"); pilihKalimat2(); } else { S2 = tS1.getText(); } } else if (pilih == "String 2") { if (tS2.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 2 Wajib Diisi"); pilihKalimat2(); } else { S2 = tS2.getText(); } } else if (pilih == "String 3") { if (tS3.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 3 Belum Terisi"); pilihKalimat2(); } else { S2 = tS3.getText(); } } else if (pilih == "String 4") { if (tS4.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 4 Belum Terisi"); pilihKalimat2(); } else { S2 = tS4.getText(); } } else if (pilih == "Hasil") { if (tHasil.getText().equals("")) { JOptionPane.showMessageDialog(null, "Belum Ada Hasil"); pilihKalimat2(); } else { S2 = tHasil.getText(); } } else if (pilih == "Manual") { S2 = JOptionPane.showInputDialog("Masukkan Kalimat 2"); } else { JOptionPane.showMessageDialog(null, "Silahkan Pilih String 2"); pilihKalimat2(); } } private void nyisip() { String[] pilihan = new String[]{"=== Silahkan Pilih Angka, Angka Ke- ===", "Integer 1", "Integer 2", "Manual"}; String pilih = question(pilihan); if (pilih == "Integer 1") { if (tI1.getText().equals("")) { JOptionPane.showMessageDialog(null, "Integer 1 Belum Terisi"); nyisip(); } else { S3 = tI1.getText(); } } else if (pilih == "Integer 2") { if (tI2.getText().equals("")) { JOptionPane.showMessageDialog(null, "Integer 2 Belum Terisi"); nyisip(); } else { S3 = tI2.getText(); } } else if (pilih == "Manual") { S3 = JOptionPane.showInputDialog("Masukkan Karakter ke - "); } else if (pilih == "=== Silahkan Pilih Angka, Angka Ke- ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); nyisip(); } try{ a = Integer.parseInt(S3); } catch(Exception e){ JOptionPane.showMessageDialog(null, "Data Harus Bilangan Bulat Positif," + "\nSilahkan isi Kembali!"); nyisip(); } if (a > S1.length()) { JOptionPane.showMessageDialog(null, "Data Kelebihan,\nSilahkan Ulangi!"); nyisip(); } if (a S1.length()) c = S1.length(); } private void bHapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: tS3.setText(null); tS4.setText(null); tI1.setText(null); tI2.setText(null); tHasil.setText(null); }

private void bLenActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); a = S1.length(); tHasil.setText(String.valueOf(a)); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanInt(); } }

private void bConcatActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); pilihKalimat2(); hasil = S1.concat(S2); tHasil.setText(hasil); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } }

private void bInsertActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); pilihKalimat2(); nyisip(); StringBuilder hasil=new StringBuilder(S1); hasil.insert(a-1, S2); tHasil.setText(hasil.toString()); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } }

private void bSubStringActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); nyisip(); jmlkarakater(); hasil = S1.substring(a-1,c-1); tHasil.setText(hasil); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } }

private void bDeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); nyisip(); jmlkarakater(); StringBuilder hasil = new StringBuilder(S1); hasil.delete(a-1, c-1); tHasil.setText(hasil.toString()); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } }

/** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(ViewSD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(ViewSD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(ViewSD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(ViewSD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //

/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run(){ new ViewSD().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton bConcat; private javax.swing.JButton bDelete; private javax.swing.JButton bHapus; private javax.swing.JButton bInsert; private javax.swing.JButton bLen; private javax.swing.JButton bSubString; private stukturdata.Background background1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JTextField tHasil; private javax.swing.JTextField tI1; private javax.swing.JTextField tI2; private javax.swing.JTextField tS1; private javax.swing.JTextField tS2; private javax.swing.JTextField tS3; private javax.swing.JTextField tS4; // End of variables declaration }

III. LOGIKA PROGRAMStatic String question(String[] pilih){ String str = (String) JOptionPane.showInputDialog( null, "Daftar Pilihan", "Mari-Mari Silahkan dipilih", JOptionPane.QUESTION_MESSAGE, new ImageIcon("src/Thumb_UP.png"), pilih, pilih[0]); return str;}source code program tersebut akan menjalankan dialog pesan Daftar Pilihan. Dengan menampilkan gambar Thumb_UP.png.private void simpanString() { String[] pilihan = new String[]{"=== Silahkan Pilih ===", "String 3", "String 4"}; String pilih = question(pilihan); if (pilih == "String 3") { tS3.setText(tHasil.getText()); } else if (pilih == "String 4") { tS4.setText(tHasil.getText()); } else if (pilih == "=== Silahkan Pilih ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); simpanString(); } }Source program tersebut merukan sebuah method yang diberi nama simpanString. Perintah ini berisikan pilihan untuk memilih string 3 dan string 4.private void simpanInt() { String[] pilihan = new String[]{"=== Silahkan Pilih ===", "Integer 1", "Integer 2"}; String pilih = question(pilihan); if (pilih == "Integer 1") { tI1.setText(tHasil.getText()); } else if (pilih == "Integer 2") { tI2.setText(tHasil.getText()); } else if (pilih == "=== Silahkan Pilih ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); simpanInt(); } }merupakan method yang diberi nama simpaInt, kondisi diatas menunjukan jika kita memilih Integer 1 maka hasil dari tHasil akan disimpan pada tI1. kondisi diatas menunjukan jika kita memilih Integer 2 maka hasil dari tHasil akan disimpan pada tI2. Dan jika kita belum menentukan tempat untuk penyimpanan integer dan sudah mengklik Button OK, maka akan keluar dialog pesan yang berisi Silakan Pilih Kembali. Dan secara otomatis akan menampilkan tampilan list "=== Silahkan Pilih ===".private void pilihKalimat1(){ String[] pilihan = new String[]{"=== Silahkan Pilih Kalimat 1===", "String 1", "String 2", "String 3", "String 4", "Hasil", "Manual"}; String pilih = question(pilihan); if (pilih == "String 1") { if (tS1.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 1 Wajib Diisi"); pilihKalimat1(); } else { S1 = tS1.getText(); } } else if (pilih == "String 2") { if (tS2.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 2 Wajib Diisi"); pilihKalimat1(); } else { S1 = tS2.getText(); } } else if (pilih == "String 3") { if (tS3.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 3 Belum Terisi"); pilihKalimat1(); } else { S1 = tS3.getText(); } } else if (pilih == "String 4") { if (tS4.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 4 Belum Terisi"); pilihKalimat1(); } else { S1 = tS4.getText(); } } else if (pilih == "Hasil") { if (tHasil.getText().equals("")) { JOptionPane.showMessageDialog(null, "Belum Ada Hasil"); pilihKalimat1(); } else { S1 = tHasil.getText(); } } else if (pilih == "Manual") { S1 = JOptionPane.showInputDialog(null,"Silahkan Masukkan Kalimat 1"); } else { JOptionPane.showMessageDialog(null, "Silahkan Pilih String 1"); pilihKalimat1(); }}method ini digunakan untuk memilih kaliimat pertama / string 1 yang nantinya akan dimasukkan kedalam variabel S1. Jika kita memilih misalkan isi text dari tS3 namun kosong maka akan muncul pemberitahuan bahwa tS3 belum terisi lalu ulangi lagi dalam memilih kalimat pertama atau string 1.private void pilihKalimat2(){ String[] pilihan = new String[]{"=== Silahkan Pilih Kalimat 2===", "String 1", "String 2", "String 3", "String 4", "Hasil", "Manual"}; String pilih = question(pilihan); if (pilih == "String 1") { if (tS1.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 1 Wajib Diisi"); pilihKalimat2(); } else { S2 = tS1.getText(); } } else if (pilih == "String 2") { if (tS2.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 2 Wajib Diisi"); pilihKalimat2(); } else { S2 = tS2.getText(); } } else if (pilih == "String 3") { if (tS3.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 3 Belum Terisi"); pilihKalimat2(); } else { S2 = tS3.getText(); } } else if (pilih == "String 4") { if (tS4.getText().equals("")) { JOptionPane.showMessageDialog(null, "String 4 Belum Terisi"); pilihKalimat2(); } else { S2 = tS4.getText(); } } else if (pilih == "Hasil") { if (tHasil.getText().equals("")) { JOptionPane.showMessageDialog(null, "Belum Ada Hasil"); pilihKalimat2(); } else { S2 = tHasil.getText(); } } else if (pilih == "Manual") { S2 = JOptionPane.showInputDialog("Masukkan Kalimat 2"); } else { JOptionPane.showMessageDialog(null, "Silahkan Pilih String 2"); pilihKalimat2(); } } Method ini memiliki fungsi yang sama seperti pada method1, yang membedakannya adalah kalimat ini tersimpan pada variabel S2.private void nyisip() { String[] pilihan = new String[]{"=== Silahkan Pilih Angka, Angka Ke- ===", "Integer 1", "Integer 2", "Manual"}; String pilih = question(pilihan); if (pilih == "Integer 1") { if (tI1.getText().equals("")) { JOptionPane.showMessageDialog(null, "Integer 1 Belum Terisi"); nyisip(); } else { S3 = tI1.getText(); } } else if (pilih == "Integer 2") { if (tI2.getText().equals("")) { JOptionPane.showMessageDialog(null, "Integer 2 Belum Terisi"); nyisip(); } else { S3 = tI2.getText(); } } else if (pilih == "Manual") { S3 = JOptionPane.showInputDialog("Masukkan Karakter ke - "); } else if (pilih == "=== Silahkan Pilih Angka, Angka Ke- ===") { JOptionPane.showMessageDialog(null, "Silahkan Pilih Kembali"); nyisip(); } try{ a = Integer.parseInt(S3); } catch(Exception e){ JOptionPane.showMessageDialog(null, "Data Harus Bilangan Bulat Positif," + "\nSilahkan isi Kembali!"); nyisip(); } if (a > S1.length()) { JOptionPane.showMessageDialog(null, "Data Kelebihan,\nSilahkan Ulangi!"); nyisip(); } if (a S1.length()) c = S1.length(); }Method ini digunakan untuk memasukkan jumlah karakter, kita memasukkan inputan ke dalam variabel S4 yang bertipe data string lalu kita ubah ke dalam variabel b. Karena dalam program operasi string, java tidak mengenal mengambil sebanyak sejumlah karakter namun yang dikenal adalah indeks ke sekian, maka variabel b dianggap sebagai indeks ke b (jika dimasukkan ke dalam program operasi string). Untuk itu kita gunakan cara lain agar indeksnya sesuai dengan jumlah yang ingin kita ambilk yaitu dengan menambah indeks pertama yaitu variabel a dengan indeks kedua yaitu variabel b yang hasil penjumlahan itu akan dimasukkan ke dalam variabel c. Nantinya akan digunakan adalah variabel a dan c.private void bHapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: tS3.setText(null); tS4.setText(null); tI1.setText(null); tI2.setText(null); tHasil.setText(null); } Source kode pada button Hapus digunakan untuk menghapus isi dari textfield yang berisi inputan data yang disimpan.private void bLenActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); a = S1.length(); tHasil.setText(String.valueOf(a)); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanInt(); } } Source Program tersebut dibuat untuk menjalankan perintah operasi string Len, yakni menghitung banyaknya karakter pada suatu kata.private void bConcatActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); pilihKalimat2(); hasil = S1.concat(S2); tHasil.setText(hasil); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } } Source Program tersebut dibuat untuk menjalakan perintah operasi string Concat, yakni menggabungkan 2 buah kalimat. Yang hasilnya disimpan dalam variabel hasil.private void bInsertActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); pilihKalimat2(); nyisip(); StringBuilder hasil=new StringBuilder(S1); hasil.insert(a-1, S2); tHasil.setText(hasil.toString()); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } } Source program tersebuat digunakan untuk menjalankan operasi string Insert. Yaitu memasukan satu kalimat ke dalam kalimat tertentu. Pada posisi yang dapat ditentukan.private void bSubStringActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); nyisip(); jmlkarakater(); hasil = S1.substring(a-1,c-1); tHasil.setText(hasil); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) { simpanString(); } } Source program tersebut digunakan untuk menjalankan operasi string Substring. Operasi ini merupan operasi untuk menyisipkan string pada indeks tertentu dan sebanyak berapa karakter yang disisipkan.private void bDeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: pilihKalimat1(); nyisip(); jmlkarakater(); StringBuilder hasil = new StringBuilder(S1); hasil.delete(a-1, c-1); tHasil.setText(hasil.toString()); if (JOptionPane.showConfirmDialog(null,"Hasil : " + tHasil.getText() + "\nIngin Disimpan?" ,"Confirmation Dialog",JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE)==JOptionPane.YES_OPTION) {simpanString();} } Source program tersebut menjalankan perintah Delete pada operasi string. Perintah ini akan menghapus karakter tertentu dan sebanyak berapa karakter tersebut dihilangkan.

IV. OUTPUT

1. LEN

Akan tampil hasil 11, yakni panjang dari string yang diinputkan.

2. INSERT

Hasilnya merupakan penyisipan kalimat 2 di kalimat 1 dengan indeks

3. DELETE

Hasil yang akan tampil adalah penghapusan kalimat dari string 3, sejumlah 4 karakter dari indeks ke 3.

4. CONCAT

Hasilnya merupakan gabungan dari kalimat 1 dengan kalimat 2.5. SUBSTRING

Hasil yang ditampilkan adalah mengambil 5 karater pada indeks ke-2 dari kalimat 1.5

1

4

0

8

2

5

7

Nomor urut: 1257

Tahun masuk: 2008

Fakultas: 1 Komputer 2 Ekonomi 3 Teknik Sipil 4 Teknologi Industri 5 Sastra 6 Psikologi

Untuk Fakultas Teknologi Industri: 1 Teknik Mesin 2 Teknik Elektro 3 Teknik Telekomunikasi 4 Teknik Industri 5 Teknik Informatika