1. Buatlah program dengan memanfaatkan konsep tumpukan(stack) untuk permasalahan pemutaran

Berikut ini adalah pertanyaan dari sebastianustebai pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

1. Buatlah program dengan memanfaatkan konsep tumpukan(stack) untuk permasalahan pemutaran playlist lagu dengan menggunakan Array.Ketentuan :
• Gunakan class Scanner untuk melakukan input data
• Fitur/Menu yang tersedia adalah:
o Tampilkan Data Playlist
o Tambah Data Playlist
o Hapus Data Playlist
o Tambah Data Playlist di urutan tertentu
o Hapus Data Playlist di urutan tertentu
o Hapus semua Playlist

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Jawaban:

import java.util.Scanner;

public class Playlist {

   private static final int MAX_SIZE = 100;

   private String[] songs = new String[MAX_SIZE];

   private int top = -1;

   public static void main(String[] args) {

       Scanner input = new Scanner(System.in);

       Playlist playlist = new Playlist();

       int choice;

       do {

           System.out.println("Playlist Menu");

           System.out.println("1. Tampilkan Data Playlist");

           System.out.println("2. Tambah Data Playlist");

           System.out.println("3. Hapus Data Playlist");

           System.out.println("4. Tambah Data Playlist di Urutan Tertentu");

           System.out.println("5. Hapus Data Playlist di Urutan Tertentu");

           System.out.println("6. Hapus Semua Playlist");

           System.out.println("0. Keluar");

           System.out.print("Masukkan pilihan Anda: ");

           choice = input.nextInt();

           switch (choice) {

               case 1:

                   playlist.displayPlaylist();

                   break;

               case 2:

                   System.out.print("Masukkan judul lagu: ");

                   input.nextLine();

                   String songTitle = input.nextLine();

                   playlist.push(songTitle);

                   System.out.println("Lagu " + songTitle + " telah ditambahkan ke playlist");

                   break;

               case 3:

                   String removedSong = playlist.pop();

                   System.out.println("Lagu " + removedSong + " telah dihapus dari playlist");

                   break;

               case 4:

                   System.out.print("Masukkan posisi playlist yang diinginkan: ");

                   int index = input.nextInt();

                   System.out.print("Masukkan judul lagu: ");

                   input.nextLine();

                   songTitle = input.nextLine();

                   playlist.pushAt(songTitle, index);

                   System.out.println("Lagu " + songTitle + " telah ditambahkan ke playlist di posisi " + index);

                   break;

               case 5:

                   System.out.print("Masukkan posisi playlist yang akan dihapus: ");

                   index = input.nextInt();

                   removedSong = playlist.popAt(index);

                   System.out.println("Lagu " + removedSong + " telah dihapus dari playlist di posisi " + index);

                   break;

               case 6:

                   playlist.clearPlaylist();

                   System.out.println("Semua playlist telah dihapus");

                   break;

               case 0:

                   System.out.println("Terima kasih telah menggunakan aplikasi Playlist");

                   break;

               default:

                   System.out.println("Masukkan pilihan yang valid");

                   break;

           }

           System.out.println();

       } while (choice != 0);

   }

   public void push(String songTitle) {

       if (top == MAX_SIZE - 1) {

           System.out.println("Playlist penuh, tidak dapat menambahkan lagu");

       } else {

           top++;

           songs[top] = songTitle;

       }

   }

   public String pop() {

       if (top == -1) {

           System.out.println("Playlist kosong, tidak dapat menghapus lagu");

           return null;

       } else {

           String removedSong = songs[top];

           top--;

           return removedSong;

       }

   }

   public void pushAt(String songTitle, int index) {

       if (top == MAX_SIZE - 1) {

           System.out.println("Playlist penuh, tidak dapat menambahkan lagu");

       } else if (index < 0 || index > top + 1) {

           System.out.println("Posisi playlist tidak valid");

     

} else {

       for (int i = top; i >= index; i--) {

           songs[i + 1] = songs[i];

       }

       songs[index] = songTitle;

       top++;

   }

   public String popAt(int index) {

       if (top == -1) {

           System.out.println("Playlist kosong, tidak dapat menghapus lagu");

           return null;

       } else if (index < 0 || index > top) {

           System.out.println("Posisi playlist tidak valid");

           return null;

       } else {

           String removedSong = songs[index];

           for (int i = index; i < top; i++) {

               songs[i] = songs[i + 1];

           }

           top--;

           return removedSong;

       }

   }

   

   public void clearPlaylist() {

       top = -1;

   }

   

   public void displayPlaylist() {

       if (top == -1) {

           System.out.println("Playlist kosong");

       } else {

           System.out.println("Playlist:");

           for (int i = top; i >= 0; i--) {

               System.out.println((top - i + 1) + ". " + songs[i]);

           }

       }

   }

Semoga dengan pertanyaan yang sudah terjawab oleh Adamken dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Sat, 01 Jul 23