Evaluasi Tengah Semester

Evaluasi Tengah Semester 2021

1. Perbedaan Struktur Data Primitif dan Non-Primitif


    Terdapat dua tipe struktur data yang terdapat pada dunia pemrograman, yaitu: tipe struktur data primitif dan tipe struktur data non-primitif. Tipe struktur data primitif merupakan tipe struktur data yang sudah tersedia dalam bahasa pemrograman. Tipe data ini tidak dapat dipecah lagi menjadi tipe data yang lebih simpel/ sederhana. Tipe struktur data primitif sendiri, terdiri dari beberapa tipe data, seperti :
  1. Tipe Data Logika, contohnya boolean,
  2. Tipe Data Karakter, contohnya char,
  3. Tipe Data Bilangan, yang terdiri dari:
    1. Bilangan Bulat, contohnya byte, short, int, long, dan lainnya,
    2. Bilangan Pecahan, contohnya float dan double
    Berbeda dengan tipe struktur data primitif, tipe struktur data non-primitif merupakan tipe data yang belum terdefinisi sebelumnya dalam bahasa pemrograman. Tipe data non-primitif adalah tipe data yang dibuat sendiri oleh programmer dan terdiri dari beberapa tipe data primitif. Hal ini dapat berarti tipe data non-primitif dapat dipecah menjadi tipe data yang lebih sederhana. Contoh tipe-tipe struktur data non-primitif adalah:
  1. Array, merupakan tipe data yang terdiri dari tipe data primitif yang sama. Misalnya, untuk menginisialisasi bilangan bulat yang sangat banyak, akan menjadi tidak efektif jika diinisialisasi satu per satu. Untuk mengatasinya, dibuatlah array;
  2. String, merupakan tipe data yang dapat menyimpan angka (integer) dan karakter (char) secara bersamaan. Sebagai contoh, data "Ac707*&#" tidak dapat disimpan pada array karena setiap elemen memiliki tipe data primitif yang berbeda-beda, maka dari itu, digunakan tipe data String untuk menyimpannya;
  3. Stack, merupakan tipe struktur data non-primitif yang memiliki konsep LIFO (Last In First Out). Tipe data ini menggunakan konsep dynamic array, dimana setiap node dari sebuah data, menyimpan alamat memori dari node selanjutnya dan selalu berkesinambungan. Untuk penjelasan lebih lanjut mengenai stack dan implementasinya, dapat dilihat pada link berikut. Penjelasan dan Implementasi Stack di Java;
  4. Queue, merupakan tipe struktur data non-primitif yang memiliki konsep FIFO (First In First Out). Tipe data ini juga menggunakan konsep dynamic array seperti stack. Untuk penjelasan lebih lanjut mengenai Queue dan implementasinya, dapat dilihat pada link berikut. Penjelasan dan Implementasi Queue di Java; dan lain sebagainya.
    Untuk mempermudah pemahaman mengenai perbedaan dari tipe data primitif dan non-primitif, dapat diperhatikan program dan penjelasan berikut.

/**
* Penjelasan Perbedaan Tipe Data Primitif
* dan Non-Primitif
*
* @author Anggito Anju
* @version 1.0 - 5 Mei 2021
*/
public class TipeData
{
public static void main(String[] args) {
/* Tipe Data Primitif */
// Bilangan Bulat (byte, short, int, long)
System.out.println("<== Implementasi Tipe Data Primitif ==>");
// 1. byte
// (Memiliki besar memori 1 byte)
// (Batas : -128 sampai 127 (dalam bilangan bulat))
byte X = 100;
byte Y = -100;
System.out.println("X + Y = " + (X+Y));
// 2. short
// (Memiliki besar memori 2 bytes)
// (Batas : -32,768 sampai 32,767 (dalam bilangan bulat))
short I = 10000;
short J = -10000;
System.out.println("I - J = " + (I-J));
// 3. int
// (Memiliki besar memori 4 bytes)
// (Batas : -2,147,483,648 sampai 2,147,483,647 (dalam bilangan bulat))
int A = 1000000000;
int B = -1000000000;
System.out.println("A * B = " + (A*B));
// 4. long
// (Memiliki besar memori 8 bytes)
// (Batas : -9,223,372,036,854,775,808 sampay 9,223,372,036,854,775,807 (dalam bilangan bulat))
long C = 100000000000L; //Gunakan 'L' sebagai penunjuk long
long D = -1000000000000L;
System.out.println("C / D = " + (C/D));
// Bilangan Pecahan (float, double)
// 1. float
// (Memiliki besar memori 4 bytes)
// (Dapat menyimpan 6 sampai 7 angka di tempat desimal)
float G = 5.54845f; //Gunakan 'f' sebagai penunjuk float
float H = -48421.5992f;
System.out.println("G + H = " + (G+H));
// 2. double
// (Memiliki besar memori 8 bytes)
// (Dapat menumpan sampai 15 angka di tempat desimal)
double P = 5155412.2515445157478d; //Gunakan 'd' sebagai penunjuk double
double Q = -4124848165151.415481651d;
System.out.println("P - Q = " + (P-Q));
// Logika (True || False)
boolean T = true;
boolean F = false;
// Dapat digunakan sebagai pembanding
System.out.println("A = B : " + (A == B));
System.out.println();
/* Tipe Data Non-Primitif */
// 1. Array of (Primitive Type Data)
// Array of Integer
int arr_int[] = {500, -4815, 2845, -25, 1915};
System.out.println("<===== Jumlah dari array_int =====>");
//Gunakan iterasi sebanyak jumlah elemen dari array untuk jumlah
int total_jumlah = 0;
for(int i = 0; i < 5; i++) {
total_jumlah += arr_int[i];
}
System.out.println("Jumlah total array = " + total_jumlah);
// Array of Char
char arr_char[] = {'X', ' ', 'A', 'E', ' ', 'A', '-', 'X', 'i', 'i'};
System.out.println("<===== Array of Char =====>");
System.out.print("Elemen array of char : ");
//Gunakan iterasi sebanyak jumlah elemen dari array untuk print char 1 per 1
for(int i = 0; i < 10; i++) {
System.out.print(+arr_char[i]);
}
System.out.println();
// 2. String
String string_of_data = "Non-Primitive Data Types";
System.out.println("<===== String =====>");
System.out.print("Isi String : ");
System.out.println(string_of_data);
// 3. Stack
System.out.println("<===== Stack =====>");
Stack newStack = new Stack();
int maxStack = 3;
newStack.push(8);
System.out.println("Memasukkan 8 pada stack");
//Membuat bentuk stack
for(int i = 0; i< maxStack - newStack.size(); i++) {
System.out.println("| |");
}
System.out.println("| 8 |");
System.out.println("-----");
newStack.push(7);
System.out.println("Memasukkan 7 pada stack");
//Membuat bentuk stack
for(int i = 0; i< maxStack - newStack.size(); i++) {
System.out.println("| |");
}
System.out.println("| 7 |");
System.out.println("| 8 |");
System.out.println("-----");
newStack.push(3);
System.out.println("Memasukkan 3 pada stack");
System.out.println("| 3 |");
System.out.println("| 7 |");
System.out.println("| 8 |");
System.out.println("-----");
newStack.pop();
System.out.println("Mengeluarkan data teratas pada stack");
for(int i = 0; i< maxStack - newStack.size(); i++) {
System.out.println("| |");
}
System.out.println("| 7 |");
System.out.println("| 8 |");
System.out.println("-----");
// 4. Queue
System.out.println("<===== Queue =====>");
int maxQueue = 5;
QueueImplementation newQueue = new QueueImplementation(maxQueue);
newQueue.enqueue(15);
newQueue.front();
System.out.println("| 15 |");
for(int i = 0; i< maxQueue-2 - newQueue.size; i++) {
System.out.println("| |");
}
newQueue.enqueue(32);
newQueue.front();
System.out.println("| 15 |");
System.out.println("| 32 |");
for(int i = 0; i< maxQueue-2 - newQueue.size; i++) {
System.out.println("| |");
}
newQueue.enqueue(27);
newQueue.front();
System.out.println("| 15 |");
System.out.println("| 32 |");
System.out.println("| 27 |");
newQueue.dequeue();
System.out.println("| 32 |");
System.out.println("| 27 |");
for(int i = 0; i< maxQueue-2 - newQueue.size; i++) {
System.out.println("| |");
}
}
}
view raw TipeData.java hosted with ❤ by GitHub

    Dan berikut merupakan hasil output dari source code di atas.


    Untuk konklusinya, seperti pada source code di atas, semua tipe data primitif tidak harus dibuat lagi terlebih dahulu, sedangkan tipe data non-primitif harus dibuat terlebih dahulu.

2. Mengubah Ekspresi Infix menjadi Postfix pada Stack

    Ekspresi Infix merupakan ekspresi yang kita temui sehari-hari. Contoh notasi infix adalah sebagai berikut "A+B*C^D-E/F". Pada notasi notasi infix ini, kita dapat mengerti bahwa pangkat (^) dikerjakan terlebih dahulu. Kemudian pembagian (/) dan perkalian (*) dikerjakan selanjutnya. Setelah operasi telah dikerjakan, kemudian operasi positif (+) dan negatif (-) dikerjakan selanjutnya. Maka, jika ekspresi infix diubah menjadi ekspresi postfix, akan didapatkan ekspresi postfix " ABCD^*+EF/- ". Untuk lebih mudah memahaminya, dapat dilihat program mengubah ekspresi infix menjadi ekspresi postifix dibawah ini.

    Stack Methods

/**
* Stack Methods
*
* @author Anggito Anju
* @version 1.0 - 22 Apr 21
*/
import java.util.List;
import java.util.ArrayList;
public class Stack
{
private List<Object> list = new ArrayList<Object>();
private int currIndex = -1;
public void push(Object newData) {
list.add(newData);
currIndex++;
}
public Object pop() {
Object popData = list.remove(currIndex);
currIndex--;
return popData;
}
public Object top() {
return list.get(currIndex);
}
public void clearStack(Object newData) {
list.clear();
currIndex = -1;
}
public int size() {
return list.size();
}
}
view raw Stack.java hosted with ❤ by GitHub

    Infix to Postfix Methods

/**
* Converting infix to confix expressions
*
* @author Anggito Anju
* @version 1.0 - 22 Apr 21
*/
import java.util.Stack;
public class InfixtoPostfixClass
{
//check the operator's precedences
static int precedence(char ch)
{
switch (ch)
{
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
}
return -1;
}
//Converting Infix to Postfix expression
//Main Method
//String for infix in input parameter
//String for postfix fro output
static String infixToPostfix(String inputExpression) {
/* Use Stack to store operators */
//stack init
Stack<Character> stackProcess = new Stack<>();
String postfixAnswer = new String("");
for(int i = 0; i<inputExpression.length(); i++) {
char scannedInput = inputExpression.charAt(i);
//if scanned character is letter or digit
//add to queue
if(Character.isLetterOrDigit(scannedInput)) {
postfixAnswer += scannedInput;
}
//if scanned character is '('
//add to stack
else if(scannedInput == '(')
stackProcess.push(scannedInput);
//if scanned character is ')'
//move out all the stack elements till '(' is encountered to queue
else if(scannedInput == ')') {
while(!stackProcess.isEmpty() && stackProcess.peek() != '(') {
postfixAnswer += stackProcess.pop();
}
//move '(' to queue
stackProcess.pop();
}
//if scanned character is an operator
else {
//check till stack operators is > input operator
//move out the operator to queue
while(!stackProcess.isEmpty() && precedence(scannedInput) <= precedence(stackProcess.peek())) {
postfixAnswer += stackProcess.pop();
}
//add the new bigger operator to stack
stackProcess.push(scannedInput);
}
}
//if all input string already processed
//move all elements from stack to queue
while(!stackProcess.isEmpty()) {
//if there is '(' without ')'
if(stackProcess.peek() == '(')
throw new IllegalStateException("Invalid Expression");
//move to queue
postfixAnswer += stackProcess.pop();
}
//returning all queue elements to main methods
return postfixAnswer;
}
}

    App Infix to Postfix

/**
* App Infix to Postfix Expression
*
* @author Anggito Anju
* @version 1.0 - 22 Apr 21
*/
import java.util.Scanner;
public class AppInfixtoPostfix
{
public static void main(String args[]) {
//input variable
String inputExpressionUser;
String outputAnswer;
//inputing user expression
Scanner scanner = new Scanner(System.in);
inputExpressionUser = scanner.nextLine();
scanner.close();
//converting user expression
outputAnswer = InfixtoPostfixClass.infixToPostfix(inputExpressionUser);
System.out.println("Infix : " + inputExpressionUser);
System.out.println("Postfix : " + outputAnswer);
}
}
    Dan berikut merupakan hasil output dari App Infix to Postfix


    Dari source code di atas, didapatkan hasil dari ekspresi postfix dari ekspresi infix "A+B*C^D-E/F" adalah "ABCD^*+EF/-".

3. Membuat Program Antrian di Bank

    a. Antrian di Bank seperti yang kita ketahui memiliki sifat FIFO (First In First Out). Untuk membuat program antrian bank, kita akan membutuhkan struktur data yang juga memiliki sifat FIFO. Struktur data yang akan digunakan adalah Queue/Antrian.

    b. Berikut merupakan gambaran singkat bagaimana program akan dijalankan
   

       Seperti pada gambar diatas, nasabah yang datang ke bank harus mengambil antrian dahulu. Antrian tersebut akan memberitahukan nomor yang didapatkan oleh nasabah. Setelah nasabah telah mendapatkan nomor antrian, nasabah akan masuk ke antrian secara terurut.
       Setelah itu, pegawai bank akan melayani nasabah yang paling pertama. Setelah pelayanan telah selesai dilakukan, nama nasabah akan dihapus dari antrian, kemudian pegawai bank akan melayani yang selanjutnya dan begitu seterusnya.

    c. Untuk penjelasan pengimplementasiannya dalam sebuah program akan dibutuhkan flowchart program sebagai berikut.

 Flowchart

         Untuk pengimplementasiannya dalam sebuah program, dapat dilihat pada jawaban soal nomor 4.

4. Implementasi Program Antrian Bank di Java

    Untuk pengimplementasian antrian bank, akan digunakan 3 class. Class yang pertama merupakan class Queue. Class Queue ini akan berfungsi untuk menyimpan suatu keutuhan antrian. Class Queue sendiri terdiri dari beberapa method. Berikut method-method yang digunakan pada class Queue.
  1. Queue(), sebagai constructur class;
  2. enqueue(...), digunakan untuk meng-input data baru pada antrian;
  3. deque(), digunakan untuk menghapus data pada antrian;
  4. queue_size(), untuk mengembalikan nilai dari banyak pengantri; dan
  5. queue_view(), untuk menunjukkan antrian yang ada.
    Berikut merupakan source code dari class Queue.

/**
* Class Queue
*
* @author Anggito Anju
* @version 1.0 - 7 Mei 21
*/
public class Queue
{
int size = 0;
NodeQueue head, tail;
//Constructur Queue
public Queue() {
head = tail = null;
}
//Masukkan data baru pada queue
public void enqueue(String name, String need) {
//Alokasi memori node baru
NodeQueue newNode = new NodeQueue();
//Assign data ke node baru
newNode.nama = name;
newNode.keperluanNasabah = need;
newNode.next = null;
//Jika Queue masih kosong
if(head == null) {
head = tail = newNode;
}
//Jika ada isi, assign ke selanjutnya
else {
tail.next = newNode;
tail = newNode;
}
//Tambahkan size queue
size++;
}
//Menghapus data pada queue
public void dequeue() {
//Jika queue kosong
if(head == null) {
System.out.println("Antrian Kosong!");
}
else {
head = head.next;
size--;
}
}
//Return size dari queue
public int queue_size() {
return size;
}
//Melihat queue
public void queue_view() {
//Jika kosong
if(size == 0) {
System.out.println("Antrian Kosong!");
}
else {
NodeQueue tempNode = head;
//print sebanyak isi queue
System.out.println("Nomor\t|| Nama\t|| Keperluan\t||");
for(int i = 1; i<=size; i++) {
if(tempNode != null) {
System.out.println(+(i)+".\t||"+(tempNode.nama)+"\t||" +(tempNode.keperluanNasabah)+"\t||");
tempNode = tempNode.next;
}
}
}
}
}
view raw Queue.java hosted with ❤ by GitHub

    Class kedua yang digunakan adalah class NodeQueue. Class NodeQueue ini akan digunakan untuk menyimpan semua data dari pengantri. NodeQueue dapat menyimpan nama dan keperluan pengantri. Singkatnya, NodeQueue merupakan sebuah node dari setiap pengantri bank. Berbeda dengan class lainnya, class NodeQueue tidak memiliki method sendiri. Berikut merupakan source code dari class NodeQueue.

/**
* Class Node setiap Queue
*
* @author Anggito Anju
* @version 1.0 - 7 Mei 21
*/
public class NodeQueue
{
String nama,
keperluanNasabah;
//penunjuk next node
NodeQueue next = null;
}
view raw NodeQueue.java hosted with ❤ by GitHub

    Class selanjutnya, class AntrianApp merupakan class yang digunakan sebagai program utama menjalankan antrian. Program ini dimulai dengan menentukan user dari program tersebut. Jika user merupakan nasabah, maka nasabah akan memilih keperluan, dan jika user merupakan pegawai, maka nasabah akan memilih pelayanan dan seterusnya sesuai yang tergambar pada flowchart. Untuk lebih jelasnya berikut ini merupakan source code dari AntrianApp.

/**
* Aplikasi Antrian
*
* @author Anggito Anju
* @version 1.0 - 7 Mei 21
*/
import java.util.Scanner;
public class AntrianApp
{
public static void main(String[] args) {
//Deklarasi Variabel
int layanan,
keperluan,
user,
pengerjaan,
jenisPegawai;
String namaNasabah;
//Deklarasi pelayanan di Customer Service
String keperluanCS_1 = "Pembukaan rekening bank",
keperluanCS_2 = "Pelayanan masalah pada rekening nasabah",
keperluanCS_3 = "Informasi saldo dan mutasi nasabah",
keperluanCS_4 = "Administrasi buku cek dan buku tabungan";
//Deklarasi pelayanan di Teller
String keperluanTeller_1 = "Penyetoran tabungan dan deposito",
keperluanTeller_2 = "Pencatatan tabungan dan deposito",
keperluanTeller_3 = "Pencatatan transaksi buku tabungan";
//Buat input object user
Scanner inputObject = new Scanner(System.in);
Scanner nameObject = new Scanner(System.in);
//Buat Queue
Queue queueAntrianCS = new Queue();
Queue queueAntrianTeller = new Queue();
//Buat User Interface Program
System.out.println("===== Aplikasi Antrian Bank =====");
//Loop sampai program di terminate
while(true) {
//Masukkan user
System.out.println("Pilih jenis user : ");
System.out.println("1. Nasabah Bank");
System.out.println("2. Pegawai Bank");
System.out.println("3. Keluar");
user = inputObject.nextInt();
// Jika user merupakan nasabah bank
if(user == 1) {
//Membuat Loop jika nasabah salah memasukkan input
while(true) {
System.out.println();
//Memasukkan layanan yang diperlukan nasabah
System.out.println("Pilih layanan : ");
System.out.println("1. Customer Service");
System.out.println("2. Teller");
System.out.println("3. Cek Antrian");
System.out.println("4. Kembali ke Menu");
layanan = inputObject.nextInt();
// Jika nasabah membutuhkan CS
if(layanan == 1) {
//Membuat loop jika nasabah salah memasukkann input
while(true) {
System.out.println();
System.out.println("Pilih keperluan : ");
System.out.println("1. " +keperluanCS_1);
System.out.println("2. " +keperluanCS_2);
System.out.println("3. " +keperluanCS_3);
System.out.println("4. " +keperluanCS_4);
System.out.println("5. Kembali");
keperluan = inputObject.nextInt();
if(keperluan >= 1 && keperluan <= 4) {
//Masukkan nama nasabah
System.out.println();
System.out.print("Masukkan nama Anda : ");
namaNasabah = nameObject.nextLine();
//Enqueue ke Queue yang tersedia sesuai keperluan
if(keperluan == 1) {
queueAntrianCS.enqueue(namaNasabah, keperluanCS_1);
}
if(keperluan == 2) {
queueAntrianCS.enqueue(namaNasabah, keperluanCS_2);
}
if(keperluan == 3) {
queueAntrianCS.enqueue(namaNasabah, keperluanCS_3);
}
if(keperluan == 4) {
queueAntrianCS.enqueue(namaNasabah, keperluanCS_4);
}
//User Interface untuk informasi nasabah
System.out.println();
System.out.println("== Customer Service ==");
System.out.println("Nomor antrian anda : " +queueAntrianCS.size);
System.out.print("Dengan keperluan : ");
if(keperluan == 1) {
System.out.println(keperluanCS_1);
}
if(keperluan == 2) {
System.out.println(keperluanCS_2);
}
if(keperluan == 3) {
System.out.println(keperluanCS_3);
}
if(keperluan == 4) {
System.out.println(keperluanCS_4);
}
break;
}
//Kembali ke pilih layanan
else if(keperluan == 5) {
break;
}
//user salah memasukkan input
else {
System.out.println("Nomor tidak valid!");
}
}
}
// Jika nasabah membutuhkan teller
else if(layanan == 2) {
//Membuat loop jika user salah memasukkan nomor
while(true) {
System.out.println();
System.out.println("Pilih keperluan : ");
System.out.println("1. " +keperluanTeller_1);
System.out.println("2. " +keperluanTeller_2);
System.out.println("3. " +keperluanTeller_3);
System.out.println("4. Kembali");
keperluan = inputObject.nextInt();
if(keperluan >= 1 && keperluan <= 3) {
//Masukkan nama nasabah
System.out.println();
System.out.print("Masukkan nama Anda : ");
namaNasabah = nameObject.nextLine();
//Enqueue ke Queue yang tersedia sesuai keperluan
if(keperluan == 1) {
queueAntrianTeller.enqueue(namaNasabah, keperluanTeller_1);
}
if(keperluan == 2) {
queueAntrianTeller.enqueue(namaNasabah, keperluanTeller_2);
}
if(keperluan == 3) {
queueAntrianTeller.enqueue(namaNasabah, keperluanTeller_3);
}
//User Interface untuk informasi nasabah
System.out.println("== Teller ==");
System.out.println("Nomor antrian anda : " +queueAntrianTeller.size);
System.out.print("Dengan keperluan : ");
if(keperluan == 1) {
System.out.println(keperluanTeller_1);
}
if(keperluan == 2) {
System.out.println(keperluanTeller_2);
}
if(keperluan == 3) {
System.out.println(keperluanTeller_3);
}
break;
}
//Kembali ke menu layanan
else if(keperluan == 4) {
break;
}
//user salah memasukkan input
else {
System.out.println("Nomor tidak valid!");
}
}
}
// Jika nasabah ingin melihat antrian
else if(layanan == 3) {
System.out.println();
System.out.println("===== ANTRIAN CUSTOMER SERVICE =====");
queueAntrianCS.queue_view();
System.out.println("===== ANTRIAN TELLER =====");
queueAntrianTeller.queue_view();
}
// Jika nasabah ingin kembali ke menu
else if(layanan == 4) {
break;
}
// Jika salah input
else {
System.out.println("Nomor tidak valid!");
}
}
}
// Jika user merupakan pegawai bank
else if(user == 2) {
//Loop jika pegawai salah memasukkan input
while(true) {
System.out.println();
//Output isi antrian
System.out.println("===== ANTRIAN CUSTOMER SERVICE =====");
queueAntrianCS.queue_view();
System.out.println("===== ANTRIAN TELLER =====");
queueAntrianTeller.queue_view();
//Memilih jenis pegawai
System.out.println();
System.out.println("Pilh jenis pegawai : ");
System.out.println("1. Customer Service");
System.out.println("2. Teller");
System.out.println("3. Kembali ke Menu Utama");
jenisPegawai = inputObject.nextInt();
if(jenisPegawai == 1) {
//loop jika pegawai salah memasukkan input
while(true) {
System.out.println();
//Memilih jenis pelayanan
System.out.println("Pilih jenis pengerjaan : ");
System.out.println("1. Layani");
System.out.println("2. Hapus");
System.out.println("3. Kembali ke menu pegawai");
pengerjaan = inputObject.nextInt();
if(pengerjaan == 1 || pengerjaan == 2) {
queueAntrianCS.dequeue();
//Output isi antrian
System.out.println();
System.out.println("===== ANTRIAN CUSTOMER SERVICE =====");
queueAntrianCS.queue_view();
break;
}
else if(pengerjaan == 3) {
break;
}
else {
System.out.println("Nomor tidak valid!");
}
}
}
if(jenisPegawai == 2) {
//loop jika pegawai salah memasukkan input
while(true) {
System.out.println();
//Memilih jenis pelayanan
System.out.println("Pilih jenis pengerjaan : ");
System.out.println("1. Layani");
System.out.println("2. Hapus");
System.out.println("3. Kembali ke menu pegawai");
pengerjaan = inputObject.nextInt();
if(pengerjaan == 1 || pengerjaan == 2) {
queueAntrianTeller.dequeue();
//Output isi antrian
System.out.println();
System.out.println("===== ANTRIAN TELLER =====");
queueAntrianTeller.queue_view();
break;
}
else if(pengerjaan == 3) {
break;
}
else {
System.out.println("Nomor tidak valid!");
}
}
}
if(jenisPegawai == 3) {
break;
}
else {
System.out.println("Nomor tidak valid!");
}
}
}
// Jika user ingin menyelesaikan program
else if(user == 3) {
break;
}
// Jika user salah memasukkan nomor
else {
System.out.println("Nomor tidak valid!");
}
}
inputObject.close();
nameObject.close();
}
}
view raw AntrianApp.java hosted with ❤ by GitHub

Setelah program di run dapat didapatkan hasil output sebagai berikut.


    Untuk pengimplementasian yang lebih jelas lagi, dapat dilihat pada video yang tertera pada link berikut ini. https://youtu.be/XzryNi1qKl8

Komentar

Postingan populer dari blog ini

Dokumentasi ETS PWEB 2022

Programming in Java : Mengubah Ekspresi Infix menjadi Postfix

Implementasi Stack di Java