Bravo TI, koristio sam pretragu, ali na ovo zaboravih , ovaj code u .NET obecava ,samo da ga pokusam preraditi u Java:
Code:
Code:
private bool provjeriJMBG( string jmbgUnos)
{
if ( jmbgUnos.Length == 13) // provjera duzine unosa ...
{
int[] danaUmjesecu = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
char[] niz = jmbgUnos.ToCharArray(0, 13); // pretvori u niz karaktera
// prvo provjera unosa godine rodjenja
char[] godinaRodjenja = jmbgUnos.ToCharArray(4, 3); // izvuci cifre koje se odnose na godinu rodjenja
int pomGodina = 100 * (Convert.ToInt32(godinaRodjenja[0] - '0')) +
10 * (Convert.ToInt32(godinaRodjenja[1] - '0')) +
Convert.ToInt32(godinaRodjenja[2] - '0'); // napravi godinu rodjenja
if (godinaRodjenja[0] == '0') // neko ko je rodjen u XXI vijeku ...
pomGodina += 2000;
else
pomGodina += 1000; // ko je rodjen u XX vijeku
if (pomGodina < 1900) // trenutno, godina ne moze biti manja od 1900-e !
{
MessageBox.Show("Unesena godina rodjenja manja od 1900-e godine !!!");
return false;
}
else
{
if (pomGodina > DateTime.Now.Year) // niti veca od tekuce godine !
{
MessageBox.Show("Unesena godina rodjenja veca od tekuce godine !!!");
return false;
}
}
// provjera unosa mjeseca rodjenja
char[] mjesecRodjenja = jmbgUnos.ToCharArray(2, 2); // izvuci cifre koje se odnose na mjesec rodjenja
int pomMjesec = 10 * (Convert.ToInt32(mjesecRodjenja[0] - '0')) +
Convert.ToInt32(mjesecRodjenja[1] - '0');
if (pomMjesec > 12 || pomMjesec < 1) // mjesec mora biti <= 12 i > 0
{
MessageBox.Show("Pogresno unesen mjesec rodjenja (treca i cetvrta cifra) !!!");
return false;
}
// provjera da li godina prestupna (zbog broja dana u mjesecu)
if (((pomGodina % 4) == 0) && (((pomGodina % 100) != 0) || ((pomGodina % 400) == 0))) // prestupna godina
{
danaUmjesecu[1] = 29; // koriguj broj dana za februar
}
// provjera unosa dana po mjesecu ...
char[] danRodjenja = jmbgUnos.ToCharArray(0, 2);
int pomDan = 10 * (Convert.ToInt32(danRodjenja[0] - '0')) +
Convert.ToInt32(danRodjenja[1] - '0');
if (pomDan > danaUmjesecu[pomMjesec - 1] || pomDan < 1)
{
MessageBox.Show("Pogresno unesen dan rodjenja (prva i druga cifra) !!!");
return false;
}
int zbir = 0;
// formula za racunanje kontrolnog zbira ...
for (int i = 0; i < 6; i++)
zbir += (7 - i) * (Convert.ToInt32(niz[i] - '0') + Convert.ToInt32(niz[6 + i] - '0'));
int ostatak = zbir % 11; // ostatak dijeljenja zbira sa 11
int razlika = 11 - ostatak; // razlika
// kontrola
if (ostatak == 1)// ako je ostatak 1, JMBG je POGRESAN !
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan ! (Ostatak=1)");
return false;
}
else if (ostatak == 0) // ako je Ostatak=0, i kontrolna cifra=0, JMBG je ispravan
{
if (Convert.ToInt32(niz[12] - '0').Equals(0))
{
MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(ostatak=0,kontrolna cifra=0)");
return true;
}
else
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan !(ostatak=0,kontrolna cifra!=0)");
return false;
}
}
else if (razlika == (niz[12] - '0'))
{
MessageBox.Show("Unijeti maticni broj je ISPRAVAN !(razlika=kontrolna cifra)");
return true;
}
else
{
MessageBox.Show("Unijeti maticni broj NIJE ispravan !(razlika!=kontrolna cifra)");
return false;
}
}
else
{
MessageBox.Show("JMBG mora biti dugacak 13 karaktera!!! \r\n Unesite JMBG ponovo");
return false;
}
}
Stane Dolanc: "Bavljenje tehnikom treba da postane svakodnevna potreba coveka.."