Monday, October 24, 2011

membuat angka spiral dengan java

/*
JOptionPane memudahkan untuk memunculkan kotak dialog standar yang meminta pengguna memasukkan nilai atau menginformasikan sesuatu

Disini JOptionPane digunakan untuk meminta Pengguna untuk memasukkan ukuran matriks
*/

import javax.swing.JOptionPane;



/*
*Author : Al Amin
*NPM : 1106011096
*Kelas : DDP A
*kelompok asisten : kak Wendra
*nama program : Spiral
*Penjelasan : Program ini mengisi array 2 dimensi yang berukuran N*N dengan format pengisian dimulai dari kulit array baris terluar mengikuti arah putaran jarum jam, diteruskan masuk ke kulit array yang lebih dalam mengikuti arah putaran jarum jam dan seterusnya seperti membentuk spiral. Bilangan yang dituliskan dimulai dari bilangan 0 sampai 9 kemudian , setelah menuliskan angka 9, kembali mulai dari angka 0.
Program ini akan membaca bilangan N yang dimasukkan oleh Pengguna, kemudian akan menuliskan angka-angka tersebut pada matriks NxN dengan bentuk spiral.
*/

/*
nama kelas harus sama dengan nama file
*/

public class spiral {

/*
method utama dari sebuah program, apabila method ini tidak di cantumkan , maka program tidak bisa dijalankan, karena tidak punya main method
*/
public static void main(String args[]) {
//membuat variabel n yang digunakan untuk menyimpan nilai yang dimasukkan Pengguna serta digunakan sebagai ukuran matriks
int n=0;

/*
membuat perintah masukkan dari pengguna untuk mendapatkan nilai N sebagai ukuran matriks. Apabila pengguna memasukkan data bukan bilangan bulat maka akan muncul pesan peringantan
*/

boolean salahMasukkan;
salahMasukkan = true;
while (salahMasukkan) {
try {
/**
* memberikan perintah supaya program bisa keluar setelah diklik tombol cancel, karena default dari JOptionPane apabila diklik tombol cancel maka program tetap jalan
*/
String tmp = JOptionPane.showInputDialog("Masukkan lebar kotak angka spiral !");
if (tmp == null) {
System.exit(0);
}

/**
* meng-casting dari string ke integer, karena JOptionPane tipenya string
*/
n = Integer.parseInt(tmp);
salahMasukkan = false;
}

catch (NumberFormatException e) {

pesanPeringatan();
}
}
//membuat variabel sisi bertipe integer yang digunakan untuk looping
int sisi = n;
//membuat array 2D label bertipe integer
int label[][] = new int[n][n];
//membuat variabel angka yang digunakan untuk mengisikan angka dari kulit array luar ke kulit array dalam
int angka = 0;
//membuat for looping untuk merancang indeks array mana saja yang akan diisi terlebih dahulu
for (int i = 0; i < n; i++) {

//mengisikan angka pada sisi atas pada array 2D
for (int j = 0; j < sisi; j++) {
label[i][i+j] = angka++;
//membuat mod angka supaya setelah angka 9 bisa kembali ke 0 lagi
angka %= 10;
}
//mengisikan angka pada sisi kanan pada array 2D

for (int j = 1; j < sisi; j++) {
label[i + j][n - 1 - i] = angka++;
angka %= 10;
}
//mengisikan angka pada sisi bawah pada array 2D
for (int j = sisi - 2; j > -1; j--) {
label[n - i - 1][i + j] = angka++;
angka %= 10;
}
//mengisikan angka pada sisi kiri pada array 2D
for (int j = sisi - 2; j > 0; j--) {
label[i + j][i] = angka++;
angka %= 10;
}
//mengurangi nilai sisi dengan 2 supaya membentuk pola dan pengisian angka tidak saling menimpa
sisi=sisi-2;
}

//mencetak array 'tabel' dan isinya yaitu urutan angka berbentuk spiral
for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {
System.out.print(label[i][j] + " ");
}
System.out.println("\n");

}
}
/* Memberikan pesan peringatan kepada pengguna apabila salah memberikan input
*/
public static void pesanPeringatan() {
JOptionPane.showMessageDialog(null, "Maaf , masukkan Anda bukan bilangan bulat!!! \n Silahkan coba lagi ^_^");
}
}
Facebook