Minggu, 20 Juni 2021

Pemrograman OOP Java : Stack 2

 

 

 

 

Dasar Program Java Berorientasi Objek

Stack 2 : Palindrome Checker


The Objective

Buatlah program menggunakan stack untuk mengecek apakah sebuah input kata (String) termasuk palindrom ataukah bukan. Palindrom adalah kata yang jika dibaca dari depan maupun dari belakang menghasilkan ucapan yang sama.

Contoh:

Input: KATAK. Output: Palindrom

Input: TOMAT. Output: Bukan Palindrom

Tips:

Input String dibaca per karakter untuk di-push ke stack sampai selesai semuanya (gunakan loop). Kemudian di-pop satu per satu sampai habis (empty) untuk dibandingkan dengan karakter penyusun kata yang dimasukkan (mulai dari depan). Jika ada karakter yang tidak sama, maka variabel palindrom diberi nilai False.


Source Code

  • appPalindrome (Main)

package BasicStackII;

import java.util.Scanner;

public class appPalindrome {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        cOSB2 tumpukan = new cOSB2();
        int opsi = 0;
        do {
            System.out.println("\nAPLIKASI PENGUJI PALINDROME");
            System.out.println("1. Penguji Palindrome");
            System.out.println("2. Exit");
            System.out.print("Select = ");
            opsi = input.nextInt();
            switch(opsi) {
            case 1:
                System.out.print("Masukkan Kata = ");
                String kta = input.next();
                cKomponen2 kt = new cKomponen2(kta);
                tumpukan.palindrome(kt);
                System.out.println("");
                break;
                
            case 2:
                System.out.println("Terimakasih, Sampai Jumpa!");
                break;
            }
        } while(opsi != 2);
    }
}

  • cKomponen2 (The Element)
package BasicStackII;

public class cKomponen2 {
    private String nama;
    private char karakter;
    cKomponen2 selanjutnya;
    cKomponen2 (String nma) {
        nama=nma;
        System.out.println("Objek "+ nma + " Telah Dibuat");
    }
    cKomponen2 (char krk) {
        karakter=krk;
    }
    public String getnama() {
        return nama;
    }
    public char getkarakter() {
        return karakter;
    }
}

  • cOSB2 (The Stack Operation)
package BasicStackII;

public class cOSB2 {
    cKomponen2 puncak, dasar;
    String kata;
    int akumulasi;
    cOSB2(){
        puncak = dasar = null;
        akumulasi = 0;
        System.out.println("Objek Tumpukan Telah Dibentuk");
    }
    
    public void dorong (cKomponen2 terbaru) {
        if(puncak == null) {
            puncak = dasar = terbaru;
        }
        else {
            terbaru.selanjutnya = puncak;
            puncak = terbaru;
        }
        System.out.println("Komponen Berhasil Dimasukkan");
    }
    
    public cKomponen2 tarik() {
        if(puncak == null) {
            System.out.println("Saat Ini Tumpukkan Tidak Memiliki Komponen");
            return null;
        }
        else if(puncak.selanjutnya == null) {
            cKomponen2 t = puncak;
            puncak = dasar = null;
            System.out.println("Komponen Berhasil Dikeluarkan");
            return t;
        }
        else {
            cKomponen2 t = puncak;
            puncak = puncak.selanjutnya;
            t.selanjutnya = null;
            System.out.println("Komponen Telah Dikeluarkan");
            return t;
        }
    }
         
    public void palindrome(cKomponen2 pndme) {
        kata = pndme.getnama();
        boolean palindrome = false;
        for (int i = 0; i < kata.length(); i++) {
            cKomponen2 kta = new cKomponen2(kata.charAt(i));
            dorong(kta);
        }
        for (int i = 0; i < kata.length(); i++) {
            if(tarik().getkarakter() == kata.charAt(i)) {
                System.out.println("Sama");
                palindrome = true;
            }
            else {
                System.out.println("Tidak Sama");
                palindrome = false;
                break;
            }
        }
        if(palindrome == true) {
            System.out.println("Ini Golongan Kata Palindrome");
        }
        else {
            System.out.println("Ini Golongan Kata Non-Palindrome");
        }
    }
}



The Visual Output             

  •  MENGUJI KATA NON PALINDROME : TOMAT
 

  •  MENGUJI KATA PALINDROME : KATAK

Catatan :

  • Bila gambar yang ditampilkan kurang jelas, mohon klik gambar tersebut.

Terimakasih telah berkunjung, have a nice day :))












Tidak ada komentar:

Posting Komentar