Fun & Tutorial: Membuat Diamond dengan Java

Reading Time: 5 minutes

Selamat datang di blogs UNYDeveloperNetwork. Pada artikel fun & tutorial kali ini, Saya ingin kembali memberikan tutorial untuk bersenang – senang. Kali ini Saya ingin memberikan tutorial membuat diamond dengan menggunakan bahasa pemrograman Java. Bagaimanakah caranya? mari kita simak artikel ini sampai akhir.

Untuk output dari program ini adalah seperti tangkapan layar di bawah ini.

Sudah jelas kan? bagaimana cara membuatnya? berikut adalah langkah – langkahnya.

PERTAMA, buat class JavaDiamond beserta method mainnya.

public class JavaDiamond {
     public static void main(String[] args){
     }
}

KEDUA, import dua library, yakni Scanner dan InputMismatchException. Kedua library ini akan kita gunakan untuk menghandle inputan dari User (memastikan inputan benar dan sesuai dengan format yang ditetapkan). Letakkan kedua import di atas nama class.

import java.util.InputMismatchException;
import java.util.Scanner;

KETIGA, buat non-return value method dengan access modifier private dengan nama initInput(). Method ini akan kita gunakan untuk menginisiasi Scanner supaya dapat digunakan berulang kali untuk menerima inputan dari User.

private static Scanner initInput() {
    return new Scanner(System.in);
}

KEEMPAT, buat return value method dengan access modifier private kembali dengan nama getInput() untuk memperoleh inputan dari user.

private static int getInput() {
    int x = 0;
    boolean cases = true;
    while(cases) {
        try {
            cases = false;
            System.out.print("Masukkan tinggi diamond: ");
            x = initInput().nextInt();
        }
        catch(InputMismatchException e) {
            cases = true;
            System.out.println("Masukan harus berupa Angka!");
        }
    }
    return x;
}

Mari kita perhatikan sejenak method di atas. pada method ini Saya menggunakan perulangan while untuk menghandle pengecekan kondisi apakah inputan yang diberikan user sudah benar atau belum. Secara default, di dalam try, variable cases akan bernilai false dan proses input selesai. Namun, ketika user salah dalam memasukkan value, maka akan ditangkap oleh catch dan variable cases diberikan nilai true, sehingga proses input akan diulang kembali sampai user memberikan inputan sesuai dengan format.

KELIMA, buat non-return value method dengan access modifier private dan parameter inputan berupa satu nilai integer dengan nama spaceCreator() untuk membuat space antara karakter asterisk (” * “)

private static void spaceCreator(int space) {
    for(int i = 0; i < space; i++) {
        System.out.print("  ");
    }
}

KEENAM, buat non-return value method dengan access modifier private dan parameter berupa satu nilai integer yang akan digunakan sebagai tinggi diamond dengan nama topTriangle() dan bottomTriangle()

private static void topTriangle (int height) {
    int alpha = height - 1;
    for(int i = 1; i <= height; i++) {
        spaceCreator(alpha);
        for(int a = 0; a < i; a++) {
            System.out.print("*   ");
        }
        alpha--;
        System.out.println("");
    }
}

Mari kita perhatikan sejenak method di atas. Kita dapat melihat variabel alpha diinisiasi dengan value yang diperoleh dari parameter inputan dikurang 1. Selanjutnya pada proses iterasi pembentukan segitiga, method spaceCreator() yang sudah kita buat sebelumnya dipanggil dengan parameter inputan berupa nilai dari variable alpha. Sehingga pada proses iterasi pencetakan space pada method spaceCreator() ini akan terus mengikuti pada nilai variable alpha. Dapat dilihat juga, nilai variable alpha juga dilakukan decrement, sehingga semakin ke bawah, space yang dicetak juga akan semakin sedikit (Karena semakin ke bawah nilai alpha semakin kecil, dan berakhir dengan angka 0).

Berbeda dengan method saudaranya yang ada di bawah ini. Method saudaranya yang ada di bawah ini bertugas untuk untuk mencetak segitiga secara terbalik.

private static void bottomTriangle(int height) {
    int alpha = 1;
    for(int i = height-1; i > 0; i--) {
        spaceCreator(alpha);
        for(int a = 0; a < i; a++) {
            System.out.print("*   ");
        }
        alpha++;
        System.out.println("");
    }
}

Perbedaan dengan method topTriangle() adalah, proses pencetakan space pada bottomTriangle dimulai dari nilai 1. Hal ini dikarenakan, pada method topTriangle(), segitiga bagian atas sudah selesai dicetak dan sudah tidak ada ruang untuk mencetak space lagi. Sehingga, di method bottomTriangle(), ini prosesnya di balik, pencetakan space dimulai dari angka terkecil, dan pembentukan pola segitiga dimulai dari angka terbesar. Pada akhirnya, setelah kedua method ini selesai dijalankan, maka sebuah diamond akan terbentuk.

KETUJUH, buat non-return value method dengan access modifier private dengan nama begin() sebagai method yang akan mencetak nama program.

public static void begin() {
    System.out.println("Program Diamond Java\nCoded by Muhammad Irfan Luthfi\ngithub.com/milstrike\n");
}

KEDELAPAN, buat return value method dengan access modifier private dengan nama end() untuk menghandle post-action setelah diamond java terbentuk. Post-action yang dimaksud adalah, akan muncul pertanyaan kepada user untuk melanjutkan program atau mengakhirinya. Apabila user memilih untuk melanjutkan, maka program akan kembali diulang, sebaliknya, jika user memilih untuk mengakhiri maka program akan selesai (terminated).

public static String end() {
    String loopStatus = "";
    boolean exitQuestion = true;
    while(exitQuestion) {
        System.out.print("Lanjutkan? (Y/T): ");
        loopStatus = initInput().next();
        if(loopStatus.equalsIgnoreCase("t")  || loopStatus.equalsIgnoreCase("y")) {
            exitQuestion = false;
        }
        else {
            System.out.println("Masukan hanya Y atau T!");
        }
    }
    return loopStatus;
}

Pada method di atas, Saya juga melakukan handling terhadap inputan yang diberikan oleh user. Apabila user memasukkan karakter selain Y dan T, maka proses penanyaan pada post-action akan diulang kembali hingga memperoleh inputan dari user yang sesuai dengan format (Y atau T).

KESEMBILAN, pada method main, tambahkanlah baris kode berikut untuk menghandle semua method yang sudah kita buat di atas.

public static void main(String[] args) {
    String loopStatus = "y";
    begin();
    while(loopStatus.equalsIgnoreCase("y")) {
        int height = getInput();
        topTriangle(height);
        bottomTriangle(height);
        loopStatus = end();
    }
}

Seperti yang sudah Saya jelas sebelumnya, apabila loopStatus bernilai true, maka program akan diulang terus hingga loopStatus bernilai false.

Baik, bagaimana hasil run dari program ini? Mari kita perhatikan video berikut ini.

Hasil Compile dan Run Program Diamond Java

Untuk baris kode lengkapnya adalah sebagai berikut.

package javaDiamond;

import java.util.InputMismatchException;
import java.util.Scanner;

public class JavaDiamond {

	private static Scanner initInput() {
		return new Scanner(System.in);
	}
	
	private static int getInput() {
		int x = 0;
		boolean cases = true;
		while(cases) {
			try {
				cases = false;
				System.out.print("Masukkan tinggi diamond: ");
				x = initInput().nextInt();
			}
			catch(InputMismatchException e) {
				cases = true;
				System.out.println("Masukan harus berupa Angka!");
			}
		}
		return x;
	}
	
	private static void spaceCreator(int space) {
		for(int i = 0; i < space; i++) {
			System.out.print("  ");
		}
	}
	
	private static void topTriangle (int height) {
		int alpha = height - 1;
		for(int i = 1; i <= height; i++) {
			spaceCreator(alpha);
			for(int a = 0; a < i; a++) {
				System.out.print("*   ");
			}
			alpha--;
			System.out.println("");
		}
	}
	
	private static void bottomTriangle(int height) {
		int alpha = 1;
		for(int i = height-1; i > 0; i--) {
			spaceCreator(alpha);
			for(int a = 0; a < i; a++) {
				System.out.print("*   ");
			}
			alpha++;
			System.out.println("");
		}
	}
	
	public static void begin() {
		System.out.println("Program Diamond Java\nCoded by Muhammad Irfan Luthfi\ngithub.com/milstrike\n");
	}
	
	public static String end() {
		String loopStatus = "";
		boolean exitQuestion = true;
		while(exitQuestion) {
			System.out.print("Lanjutkan? (Y/T): ");
			loopStatus = initInput().next();
			if(loopStatus.equalsIgnoreCase("t")  || loopStatus.equalsIgnoreCase("y")) {
				exitQuestion = false;
			}
			else {
				System.out.println("Masukan hanya Y atau T!");
			}
		}
		return loopStatus;
	}
		
	public static void main(String[] args) {
		String loopStatus = "y";
		begin();
		while(loopStatus.equalsIgnoreCase("y")) {
			int height = getInput();
			topTriangle(height);
			bottomTriangle(height);
			loopStatus = end();
		}
	}
	
}

Bagaimana? menarik bukan? Jika menarik, silakan tinggalkan sesuatu di kolom komentar. Anda dapat memberikan komentar berupa ide program, atau suatu masalah yang fun untuk diselesaikan. Sehingga ke depannya Saya dapat terus memberikan artikel fun & tutorial kepada Anda.

Selanjutnya, jika Anda ingin mencuplik artikel ini, jangan lupa sertakan juga URLnya. Anda juga dapat mengunduh source code dari program ini melalui github (tautan sudah tercantum di bagian akhir dari artikel ini).

Terima kasih.. ^_^

UNDUH PROJECT

Please follow and like us:
Advertisements

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *