Senin, 08 April 2013

PROGRAM VALIDASI TANGGAL JAVA


PROGRAM VALIDASI TANGGAL

Source Code pada Tanggal.java
import java.util.*; //memangil package java.util.* untuk Date
import java.text.*; //memangil package java.text.* untuk SimpleDateFormat
import java.util.Scanner; //memangil package java.util.Scanner untuk menginput
public class Tanggal {
    public static void main(String[] agrs){
        String inputTanggal,stringTgl,stringBln,stringThn,ulang;
        int intThn,intBln;
        String[] blnNama={"Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};
        Cek ck=new Cek(); //mendeklarasikan cara pemanggilan class Cek dengan keyword ck
          Scanner input=new Scanner(System.in);
          do{
        System.out.print("\n Masukkan tanggal (dd-mm-yyyy) "); inputTanggal=input.next(); //menginput variabel inputTanggal
          if (ck.TglValid(inputTanggal)==true) { //jika tanggal yang di input benar dan valid
            //memecah inputan menjadi 3 bagian yaitu tanggal(tgl), bulan(bln), dan tahun(thn)
            stringTgl=inputTanggal.substring(0,2); //mengambil digit ke 1-2 dari inputTanggal dan dimasukan ke stringTgl
            stringBln=inputTanggal.substring(3,5); //mengambil digit ke 4-5 dari inputTanggal dan dimasukan ke stringBln
            stringThn=inputTanggal.substring(6); //mengambil digit ke 6-terakhir dari inputTanggal dan dimasukan ke stringThn
            intBln = (Integer.parseInt(stringBln))-1; //mengubah string menjadi integer dan menentukan index array untuk bulan
            System.out.println(String.format("\n\n Tanggal yang anda input adalah = %s %s %s ",stringTgl,blnNama[intBln],stringThn));
            ck.kabisat(stringThn); //memangil method kabisat yang berda di class Cek untuk mengecek apakat tahur yang di input adalah tahun kabisat
            }
        else { //jika tanggal yang di input salah
             System.out.println("\n\n WARNING!  Tanggal yang anda input salah");
             }
          System.out.print("\n\n Apakah mau mengulang lagi y/t?  "); ulang=input.next();
            } while ( ulang.equals("y") ); //perintah mengecek perulangan dan akan di ulang jika inputan ulang adalah y
        System.out.println("\n\n =============================================");
        System.out.println("  Terima Kasih Telah Menggunakan Program Kami");
        System.out.println(" =============================================");
        System.exit(0);
        }
    }

class Cek{
    //mengecek validasi tanggal yang di input
    public static boolean TglValid(String tgl){
        String pola="dd-MM-yyyy";
        try {
            SimpleDateFormat format=new SimpleDateFormat(pola); //deklarasi format
            format.setLenient(false); //jika tanggal yang di input salah akan mertipe boolean false
            Date date=format.parse(tgl);
            return true;
            }
        catch (ParseException ex){
            System.err.println(" Error: "+ex.getMessage()); //memberitahuan pesan error
              return false;
              }
        }
    //mengecek tahun kabisat
    public void kabisat(String stringThn) {
        int intThn;
        intThn = Integer.parseInt(stringThn); //mengubah string menjadi integer
        String thnKabisat=" Tahun yang anda input adalah Tahun Kabisat";
        String bknThnKabisat=" Tahun yang anda input bukan Tahun Kabisat";
        //mengecek apakah tahun yang di input merupakan tahun kabisat
        if (intThn%4==0) {
            if (intThn%100==0) {
                if (intThn%400==0) { System.out.println(thnKabisat); } //Jika tahun itu habis dibagi 400, maka tahun kabisat.
                else { System.out.println(bknThnKabisat); } //Jika tahun itu tidak habis dibagi 400 tetapi habis dibagi 100, maka bukan tahun kabisat.
                }
            else { System.out.println(thnKabisat); } //Jika tahun itu tidak habis dibagi 400 dan 100 tetapi habis dibagi 4, maka tahun kabisat.
            }
        else { System.out.println(bknThnKabisat); } //Jika tahun tidak habis dibagi 400, 100, dan 4, maka bukan tahun kabisat.
        }
    }

LOGIKA PROGRAM
    Pertama kita akan di minta memasukkan tanggal dengan ketetapan tanggal-bulan-tahun (dd-MM-yyyy). Setelah menginput lalu akan di periksa apakah tanggal yang di input benar atau valid, dengan perintah SimpleDateFormatdan Date. Jika pengecekan pola penginputan dan ternyata tanggal yang di input benar atau valid maka akan di lakukan pemecahan atau membagi inputan tanggal sengan perintah substring. Pembagian atas dua 1-2 adalah tanggal, digit 4-5 adalah bulan, dan digit 7-10 adalah tahun. Setelah itu bulan yang sebelumnya adalah string di ubah menjadi integer dengan perintah Integer.parseInt fungsinya adalah agar diolah menjadi array blnNama yang sebelumnya array blnNama sudah dideklarasikan dan berisi nama-nama bulan dan akan memerintahkan untuk menampilkan tanggal, string dalam array blnNama, dan tahun. Setelah menampilkan hasil baru akan di periksa apakah tahun yang di input adalah tahun kabisat, jika sudah di cek apakah itu merupakan tahun kabisat dengan ketetapan yang ada makan akan memberitahunan bahwa itu merupakan tahun kabisat atau tidak, dan akan muncul pertanyaan apakah ingin mengulangin memeriksa jika mau akan mengulang meminta inputna tanggal jika tidak akan keluar dari program. Dan jika pada saat pemeriksaaan dan ternyata tanggal yang di input tidak valid maka akan ada pesan error dan peringatan dan akan di minta akan mau mengulang memeriksa atau tidak.

    Pada program saya kali ini saya menggunakan perintah penanganan eksepsi try dan catch.
Penjelasan:
Fungsi try ini adalah mengecek apakan ada kesalahan dan bila ada maka akan di lempar pada catch.
try = coba dan catch = tangkap
Seolah-oleh pengertian sehari-hari tentang coba-coba (trial & error), jika terjadi error maka tangkap kesalahannya.
try { // Blok yang diperkirakan terdapat kesalahan
}
catch { //blok yang akan dijalankan bila terjadi error
}

OUTPUT

KELOMPOK:
55411155 - NIA RIANTHY SUGIANA
58411242 - ROFATUL WIDAD
51411210 - ARVI AZMI MAULANA
54411543 - M. LUTFI R.A.