Selamat datang di blogs UNYDeveloperNetwork. Pada artikel kali ini, Saya akan mencoba sesuatu yang berbeda, yakni fun & tutorial. Jadi konsepnya adalah sebuah tutorial untuk fun. Untuk mengawali kategori fun & tutorial ini, Saya akan membahas bagaimana cara membuat Double Segitiga Angka dengan menggunakan bahasa pemrograman Java. Apakah itu Double Segitiga Angka dan bagaimanakah kodingnya? mari kita simak artikel berikut.
Apakah itu Double Segitiga Angka? Ya tidak lain dan tidak bukan adalah segitiga double yang saling berhadapan. Ada dua aplikasi dari bentuk double segitiga angka ini, yakni segitiga dengan angka berulang, dan segitiga dengan angka yang incremental. Maksudnya adalah seperti ini, perhatikan output program di bawah ini.
Pada tangkapan layar pertama, kita membentuk segitiga angka dengan angka berulang. Pada tangkapan layar kedua, kita membentuk segitiga angka dengan angka yang incremental. Bentuk kodingan kedua program ini sama persis, hanya terdapat perbedaan yang sangat kecil antara keduanya. Bagaimanakah kodingannya?
PERTAMA, buatlah class dengan nama SegitigaAngka lengkap dengan method mainnya.
public class SegitigaAngka {
public static void main(String[] args){
}
}
KEDUA, import dua library yang dibutuhkan. Yang pertama adalah Scanner dan yang kedua adalah handler errornya yakni InputMismatchException
import java.util.InputMismatchException;
import java.util.Scanner;
KETIGA, buat method dengan nilai kembalian Scanner untuk menghandle masukan
private static Scanner getScanner() {
return new Scanner(System.in);
}
KEEMPAT, buat method printSpace untuk mencetak space pada layar
private static void printSpace(int spaceLength) {
for(int i = 0; i < spaceLength; i++) {
System.out.print(" ");
}
}
KELIMA, buat method printSegitiga1 untuk mencetak segitiga di sisi kiri
//untuk SegitigaAngka dengan Angka Berulang
private static void printSegitiga1(int numbers) {
for(int i = 0; i < numbers; i++) {
System.out.print(numbers);
}
}
//untuk SegitigaAngka dengan Angka Increment
private static void printSegitiga1(int numbers) {
for(int i = 0; i < numbers; i++) {
System.out.print(i+1);
}
}
KEENAM, buat method printSegitiga2 untuk mencetak segitiga di sisi kanan
//untuk SegitigaAngka dengan Angka Berulang
private static void printSegitiga2(int numbers) {
for(int i=0; i < numbers; i++) {
System.out.print(numbers);
}
}
//untuk Segitiga Angka dengan Angka Increment
private static void printSegitiga2(int numbers) {
int charlie = numbers;
for(int i=0; i < numbers; i++) {
System.out.print(charlie);
charlie--;
}
}
KETUJUH, buat method createSegitiga untuk menghandle semua method
private static void createSegitiga(int lengthSegitiga) {
int alpha = 1, beta = lengthSegitiga;
for(int i = 0; i < lengthSegitiga; i++) {
printSegitiga1(alpha);
printSpace(beta);
System.out.print("|");
printSpace(beta);
printSegitiga2(alpha);
System.out.println("");
alpha++;
beta--;
}
}
Di sinilah letak funnya. Setelah kita membuat beberapa method, di sinilah method method tersebut kita mainkan. Method createSegitiga ini memiliki satu parameter masukan yang berupa integer untuk menentukan tinggi segitiga. Di mana dalam hal ini, tinggi segitiga juga menentukan panjang angka yang akan dicetak.
Pada awal method ini, terdapat dua variable yakni alpha dan beta. Apa fungsi dari masing – masing variable tersebut? Variable alpha berfungsi untuk menghitung berapa banyak angka yang akan dicetak dalam setiap tingkatan segitiga. Variable alpha ini akan terus di-increment dalam looping mencetak segitiga.
Kemudian, variable beta berfungsi menghitung berapa space yang harus dicetak dalam setiap tingkatan segitiga. Variable beta ini juga di –decrement dalam looping mencetak segitiga. Sehingga, method – method yang telah dibuat tadi dipanggil dan parameternya menggunakan variable alpha & beta ini.
Perhatikan pada method createSegitiga tersebut. Karena variable alpha & beta sudah disiapkan sedemikian rupa, kita hanya tinggal memanggil method method yang sudah dibuat untuk menyusun double segitiga angka. Dimulai dengan memanggil method printSegitiga1 dengan parameternya adalah menggunakan variable alpha. Setelah mencetak segitiga, kemudian kita mencetak space, oleh karena itu kita panggil method printSpace dengan parameter yang digunakan adalah variable beta. Setelah kita memanggil method printSpace, kita cetakkan karakter (“|”) sebagai divider. Setelah itu kita panggil kembali method printSpace, dilanjutkan dengan pemanggilan method printSegitiga2 untuk mencetak segitiga di sisi kanan dan diakhiri dengan println untuk mengganti baris. Di akhir dari looping kita increment value dari variable alpha dan kita decrement value dari variable beta.
Terakhir, pada method main, kita tambahkan interaksi ke user untuk mendapatkan masukan dan error handling-nya.
public static void main(String[] args) {
boolean status = true;
System.out.println("PROGRAM SEGITIGA ANGKA \nCoded in java by Muhammad Irfan Luthfi\ngithub.com/milstrike");
System.out.println("");
while(status) {
try {
System.out.print("Masukkan tinggi segitiga: ");
createSegitiga(getScanner().nextInt());
status = false;
}catch(InputMismatchException e) {
System.out.println("Masukkan harus berupa angka!");
status = true;
}
}
}
Sekarang, mari kita RUN
dan berikut ini adalah kodingan lengkapnya.
package SegitigaAngka;
import java.util.Scanner;
import java.util.InputMismatchException;
public class SegitigaAngka {
private static Scanner getScanner() {
return new Scanner(System.in);
}
private static void printSpace(int spaceLength) {
for(int i = 0; i < spaceLength; i++) {
System.out.print(" ");
}
}
private static void printSegitiga1(int numbers) {
for(int i = 0; i < numbers; i++) {
System.out.print(numbers);
}
}
private static void printSegitiga2(int numbers) {
for(int i=0; i < numbers; i++) {
System.out.print(numbers);
}
}
private static void createSegitiga(int lengthSegitiga) {
int alpha = 1, beta = lengthSegitiga;
for(int i = 0; i < lengthSegitiga; i++) {
printSegitiga1(alpha);
printSpace(beta);
System.out.print("|");
printSpace(beta);
printSegitiga2(alpha);
System.out.println("");
alpha++;
beta--;
}
}
public static void main(String[] args) {
boolean status = true;
System.out.println("PROGRAM SEGITIGA ANGKA \\nCoded in java by Muhammad Irfan Luthfi\\ngithub.com/milstrike");
System.out.println("");
while(status) {
try {
System.out.print("Masukkan tinggi segitiga: ");
createSegitiga(getScanner().nextInt());
status = false;
}catch(InputMismatchException e) {
System.out.println("Masukkan harus berupa angka!");
status = true;
}
}
}
}
package SegitigaAngka;
import java.util.Scanner;
import java.util.InputMismatchException;
public class SegitigaAngka2 {
private static Scanner getScanner() {
return new Scanner(System.in);
}
private static void printSpace(int spaceLength) {
for(int i = 0; i < spaceLength; i++) {
System.out.print(" ");
}
}
private static void printSegitiga1(int numbers) {
for(int i = 0; i < numbers; i++) {
System.out.print(i+1);
}
}
private static void printSegitiga2(int numbers) {
int charlie = numbers;
for(int i=0; i < numbers; i++) {
System.out.print(charlie);
charlie--;
}
}
private static void createSegitiga(int lengthSegitiga) {
int alpha = 1, beta = lengthSegitiga;
for(int i = 0; i < lengthSegitiga; i++) {
printSegitiga1(alpha);
printSpace(beta);
System.out.print("|");
printSpace(beta);
printSegitiga2(alpha);
System.out.println("");
alpha++;
beta--;
}
}
public static void main(String[] args) {
boolean status = true;
System.out.println("PROGRAM SEGITIGA ANGKA \\nCoded in java by Muhammad Irfan Luthfi\\ngithub.com/milstrike");
System.out.println("");
while(status) {
try {
System.out.print("Masukkan tinggi segitiga: ");
createSegitiga(getScanner().nextInt());
status = false;
}catch(InputMismatchException e) {
System.out.println("Masukkan harus berupa angka!");
status = true;
}
}
}
}
Kelemahan
Kelemahan dari kodingan ini adalah, hasil optimal hanya diperoleh maksimal dengan memasukkan angka 9. Selebihnya akan membuat susunan segitiga menjadi berantakan.
Bagaimana? masih bingungkah? Jika masih bingung, jangan sungkan untuk meninggalkan pertanyaan pada kolom komentar. Apabila Anda ingin mencuplik sesuatu dari artikel ini, jangan lupa sertakan juga URL nya. Terima kasih. ^_^
UNDUH PROJECT