Program Java Membuat Shio
/** Shio.java
* Copyright (c) 2004 Lucky E. Santoso. All Rights Reserved.
*/
import java.util.*;
import java.text.*;
public class Shio {
/*
* Tabel Tahun Baru Imlek dapat dengan mudah diperluas dengan
* memodifikasi dataImlek dan TAHUN_MIN
*/
private static String[] dataImlek = {
"2/6", "1/27", "2/15", "2/3", "1/23", "2/11", "1/31", "2/18",
"2/7", "1/28", "2/16", "2/5", "1/25", "2/13", "2/2", "2/20",
"2/9", "1/29", "2/17", "2/6", "1/27"
};
private static final int TAHUN_MIN = 1970;
private static final int TAHUN_MAX = TAHUN_MIN + dataImlek.length;
private static Calendar[] imlek = new Calendar[dataImlek.length];
private static String[] namaShio = {
"Tikus", "Kerbau", "Macan", "Kelinci", "Naga", "Ular",
"Kuda", "Kambing", "Monyet", "Ayam", "Anjing", "Babi"
};
public static final int SANGAT_TIDAK_BERJODOH = 0;
public static final int TIDAK_ADA_KOMENTAR = 1;
public static final int SANGAT_BERJODOH = 2;
static { /* static initialization */
SimpleDateFormat format = new SimpleDateFormat("MM/dd");
for (int i = 0; i < imlek.length; i++) try {
imlek[i] = new GregorianCalendar();
imlek[i].setTime(format.parse(dataImlek[i]));
imlek[i].set(Calendar.YEAR, TAHUN_MIN + i);
} catch (Exception e) {}
}
private Shio() {} /* mencegah pembentukan object */
public static int getShio(Date tanggalLahir) {
Calendar lahir = new GregorianCalendar();
lahir.setTime(tanggalLahir);
int tahunLahir = lahir.get(Calendar.YEAR);
if (tahunLahir < TAHUN_MIN || tahunLahir >= TAHUN_MAX) return -1;
if (lahir.before(imlek[tahunLahir - TAHUN_MIN])) tahunLahir--;
return (tahunLahir + 8) % 12;
}
public static String getNamaShio(int shio) {
if (shio < 0 || shio >= 12) return null;
return namaShio[shio];
}
public static int ramalJodoh(int shio1, int shio2) {
if (shio1 < 0 || shio1 >= 12) return -1;
if (shio2 < 0 || shio2 >= 12) return -1;
if (Math.abs(shio1 - shio2) == 4) return SANGAT_BERJODOH;
if (Math.abs(shio1 - shio2) == 8) return SANGAT_BERJODOH;
if (Math.abs(shio1 - shio2) == 6) return SANGAT_TIDAK_BERJODOH;
if ((shio1 + shio2) % 12 == 1) return SANGAT_BERJODOH;
if ((shio1 + shio2) % 12 == 7) return SANGAT_TIDAK_BERJODOH;
return TIDAK_ADA_KOMENTAR;
}
}
0 komentar:
Posting Komentar