/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hjælp - Hvordan laver jeg et Java program ~
Fra : Henrik


Dato : 29-11-04 13:09

Hej
>
> Kan I hjælpe mig med at lave et Java program til at checke om et
> tilfældigt indtastet cpr nummer er korrekt ved brug af modulus 11
> metoden som er vist nedenunder?
>
> CPR nummer: 1711968535
> 1*4+7*3+1*2+1*7+9*6+6*5+8*4+5*3+3*2+5*1 = 176
> 176 modulus 11 = 0
> CPR nummer er ok.
>
> På forhånd tak
>
> Henrik

 
 
Permand (29-11-2004)
Kommentar
Fra : Permand


Dato : 29-11-04 15:09


"Henrik" <hsx@ofir.dk> skrev i en meddelelse
news:5623df82.0411290409.cb7c817@posting.google.com...
> Hej
> >
> > Kan I hjælpe mig med at lave et Java program til at checke om et
> > tilfældigt indtastet cpr nummer er korrekt ved brug af modulus 11
> > metoden som er vist nedenunder?
> >
> > CPR nummer: 1711968535
> > 1*4+7*3+1*2+1*7+9*6+6*5+8*4+5*3+3*2+5*1 = 176
> > 176 modulus 11 = 0
> > CPR nummer er ok.
> >
> > På forhånd tak
> >
> > Henrik

Kan du bruge denne ?

import java.util.*;

public class CPR {
// format of danish CPR number:
// ddmmyy-nnnc
// where:
// dd = day
// mm = month
// yy = year
// nnn = sequence (includes century)
// c = checksum (includes sex)
private String number;

// constructor
public CPR(String number) {
this.number = number;
}

// check validity
public boolean isValid() {
int[] ix = { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10 };
int[] c = { 4, 3, 2, 7, 6, 5, 4, 3, 2, 1 };
if (number.length() != 11) {
return false;
}
if (number.charAt(6) != '-') {
return false;
}
for (int i = 0; i < 10; i++) {
if (!Character.isDigit(number.charAt(ix[i]))) {
return false;
}
}
if (dd() > 31) {
return false;
}
if (mm() > 12) {
return false;
}
if (century() == 0) {
return false;
}
int temp = 0;
for (int i = 0; i < 10; i++) {
temp = temp + c[i] * numericValue(number.charAt(ix[i]));
}
return ((temp % 11) == 0);
}
// check make/female
public boolean isMale() {
return odd(numericValue(number.charAt(10)));
}
public boolean isFemale() {
return even(numericValue(number.charAt(10)));
}
// get date of birth
public Date getBirth() {
int year = yy() + century();
int mon = mm() - 1;
int mday = dd();
GregorianCalendar temp = new GregorianCalendar();
temp.set(year, mon, mday);
return temp.getTime();
}
// get age
public int getAge() {
Calendar now = GregorianCalendar.getInstance();
Calendar born = new GregorianCalendar();
born.setTime(getBirth());
int result;
result = now.get(Calendar.YEAR) - born.get(Calendar.YEAR);
if (now.get(Calendar.DAY_OF_YEAR) < born.get(Calendar.DAY_OF_YEAR)) {
result--;
}
return result;
}

// standard methods
public int hashCode() {
return number.hashCode();
}
public boolean equals(Object o) {
if(o instanceof CPR) {
return number.equals(((CPR)o).number);
} else {
return false;
}
}
// get parts
private int dd() {
return Integer.parseInt(number.substring(0, 2));
}
private int mm() {
return Integer.parseInt(number.substring(2, 4));
}
private int yy() {
return Integer.parseInt(number.substring(4, 6));
}
// calculate century
private int century() {
switch (numericValue(number.charAt(7))) {
case 0 :
case 1 :
case 2 :
case 3 :
return 1900;
case 4 :
case 9 :
if (yy() < 37)
return 2000;
else
return 1900;
case 5 :
case 6 :
case 7 :
case 8 :
if (yy() < 37)
return 2000;
else if (yy() > 57)
return 1800;
else
return 0;
default :
return 0;
}
}
// odd/even
private static boolean odd(int v) {
return ((v & 1) == 1);
}
private static boolean even(int v) {
return ((v & 1) == 0);
}
// numeric value of char
private static int numericValue(char c) {
return (c - '0');
}
}



Henrik (29-11-2004)
Kommentar
Fra : Henrik


Dato : 29-11-04 20:49

"Permand" <per400543@ofirmail.dk> wrote in message news:<41ab2d81$0$86727$edfadb0f@dread11.news.tele.dk>...
> "Henrik" <hsx@ofir.dk> skrev i en meddelelse
> news:5623df82.0411290409.cb7c817@posting.google.com...
> > Hej
> > >
> > > Kan I hjælpe mig med at lave et Java program til at checke om et
> > > tilfældigt indtastet cpr nummer er korrekt ved brug af modulus 11
> > > metoden som er vist nedenunder?
> > >
> > > CPR nummer: 1711968535
> > > 1*4+7*3+1*2+1*7+9*6+6*5+8*4+5*3+3*2+5*1 = 176
> > > 176 modulus 11 = 0
> > > CPR nummer er ok.
> > >
> > > På forhånd tak
> > >
> > > Henrik
>
> Kan du bruge denne ?
>
> import java.util.*;
>
> public class CPR {
> // format of danish CPR number:
> // ddmmyy-nnnc
> // where:
> // dd = day
> // mm = month
> // yy = year
> // nnn = sequence (includes century)
> // c = checksum (includes sex)
> private String number;
>
> // constructor
> public CPR(String number) {
> this.number = number;
> }
>
> // check validity
> public boolean isValid() {
> int[] ix = { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10 };
> int[] c = { 4, 3, 2, 7, 6, 5, 4, 3, 2, 1 };
> if (number.length() != 11) {
> return false;
> }
> if (number.charAt(6) != '-') {
> return false;
> }
> for (int i = 0; i < 10; i++) {
> if (!Character.isDigit(number.charAt(ix[i]))) {
> return false;
> }
> }
> if (dd() > 31) {
> return false;
> }
> if (mm() > 12) {
> return false;
> }
> if (century() == 0) {
> return false;
> }
> int temp = 0;
> for (int i = 0; i < 10; i++) {
> temp = temp + c[i] * numericValue(number.charAt(ix[i]));
> }
> return ((temp % 11) == 0);
> }
> // check make/female
> public boolean isMale() {
> return odd(numericValue(number.charAt(10)));
> }
> public boolean isFemale() {
> return even(numericValue(number.charAt(10)));
> }
> // get date of birth
> public Date getBirth() {
> int year = yy() + century();
> int mon = mm() - 1;
> int mday = dd();
> GregorianCalendar temp = new GregorianCalendar();
> temp.set(year, mon, mday);
> return temp.getTime();
> }
> // get age
> public int getAge() {
> Calendar now = GregorianCalendar.getInstance();
> Calendar born = new GregorianCalendar();
> born.setTime(getBirth());
> int result;
> result = now.get(Calendar.YEAR) - born.get(Calendar.YEAR);
> if (now.get(Calendar.DAY_OF_YEAR) < born.get(Calendar.DAY_OF_YEAR)) {
> result--;
> }
> return result;
> }
>
> // standard methods
> public int hashCode() {
> return number.hashCode();
> }
> public boolean equals(Object o) {
> if(o instanceof CPR) {
> return number.equals(((CPR)o).number);
> } else {
> return false;
> }
> }
> // get parts
> private int dd() {
> return Integer.parseInt(number.substring(0, 2));
> }
> private int mm() {
> return Integer.parseInt(number.substring(2, 4));
> }
> private int yy() {
> return Integer.parseInt(number.substring(4, 6));
> }
> // calculate century
> private int century() {
> switch (numericValue(number.charAt(7))) {
> case 0 :
> case 1 :
> case 2 :
> case 3 :
> return 1900;
> case 4 :
> case 9 :
> if (yy() < 37)
> return 2000;
> else
> return 1900;
> case 5 :
> case 6 :
> case 7 :
> case 8 :
> if (yy() < 37)
> return 2000;
> else if (yy() > 57)
> return 1800;
> else
> return 0;
> default :
> return 0;
> }
> }
> // odd/even
> private static boolean odd(int v) {
> return ((v & 1) == 1);
> }
> private static boolean even(int v) {
> return ((v & 1) == 0);
> }
> // numeric value of char
> private static int numericValue(char c) {
> return (c - '0');
> }
> }

Ja, men jeg får en fejl ved kørslen: Exception in thread main
java.lang.NoSuchMethodError:main
Hvad gør jeg forkert?

Mads Bahrt (29-11-2004)
Kommentar
Fra : Mads Bahrt


Dato : 29-11-04 23:26

Henrik wrote:
> Ja, men jeg får en fejl ved kørslen: Exception in thread main
> java.lang.NoSuchMethodError:main
> Hvad gør jeg forkert?

Din fejlmeddelelse indikerer at der ikke er nogen mainmetode i dit
program. Den følger ikke med i CPR-klassen, da denne ikke er ment til
selvstændig brug, men som en del af et større program. Har du nogen
erfaring med java overhovedet?

MVH
Mads

Henrik (30-11-2004)
Kommentar
Fra : Henrik


Dato : 30-11-04 11:33

Mads Bahrt <mads_bahrt@hotmail.com> wrote in message news:<cog7h2$c1u$1@news.net.uni-c.dk>...
> Henrik wrote:
> > Ja, men jeg får en fejl ved kørslen: Exception in thread main
> > java.lang.NoSuchMethodError:main
> > Hvad gør jeg forkert?
>
> Din fejlmeddelelse indikerer at der ikke er nogen mainmetode i dit
> program. Den følger ikke med i CPR-klassen, da denne ikke er ment til
> selvstændig brug, men som en del af et større program. Har du nogen
> erfaring med java overhovedet?
>
> MVH
> Mads

Det burde jeg have, da jeg snart skal til examen, men jeg erkender at
hvad jeg ikke ved om Java, ville være godt at vide. Men jeg forstår
godt dit svar - så jeg vil forsøge at lave en main metode. Jeg kan jo
altid klippe fra en anden kode.

Thorbjoern Ravn Ande~ (30-11-2004)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 30-11-04 15:13

hsx@ofir.dk (Henrik) writes:

> Det burde jeg have, da jeg snart skal til examen, men jeg erkender at
> hvad jeg ikke ved om Java, ville være godt at vide. Men jeg forstår
> godt dit svar - så jeg vil forsøge at lave en main metode. Jeg kan jo
> altid klippe fra en anden kode.

http://java.sun.com/docs/books/tutorial/

Det lyder som om du måske skulle starte med "My first cup of Java".
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

RpR (30-11-2004)
Kommentar
Fra : RpR


Dato : 30-11-04 23:35

> Det lyder som om du måske skulle starte med "My first cup of Java".

Eller følge lidt bedre med i timen. Hvis du allerede nu er igang med
modulus-11 kontrol opgaven i datamatiker uddannelsen, og ikke ved at man
skal starte et program ud fra main metoden, så skal der saftsuseme læses
kraftigt på lektierne.

--

- RpR
MopedGallery - More addictive than heroine
http://www.MopedGallery.dk
ICQ: 19284098
"4-strokes are full of parts, 2-strokes are full of SPEED!"
--



Mads Bahrt (03-12-2004)
Kommentar
Fra : Mads Bahrt


Dato : 03-12-04 03:44

RpR wrote:
>>Det lyder som om du måske skulle starte med "My first cup of Java".
>
>
> Eller følge lidt bedre med i timen. Hvis du allerede nu er igang med
> modulus-11 kontrol opgaven i datamatiker uddannelsen, og ikke ved at man
> skal starte et program ud fra main metoden, så skal der saftsuseme læses
> kraftigt på lektierne.
>
Uden at vide hvad de bruger på hans udd., vil jeg bemærke at dette nogen
gange er problemet med folk der lærer java vha. bluej. Der kan man
instantiere objekter vha. en simpel gui, og derefter manipulere dem.
oftest kan disse folk gå et eller flere semestre uden at kunne skrive et
simpelt stand-alone program.

MVH

Mads

RpR (03-12-2004)
Kommentar
Fra : RpR


Dato : 03-12-04 15:50

> Uden at vide hvad de bruger på hans udd., vil jeg bemærke at dette nogen
> gange er problemet med folk der lærer java vha. bluej. Der kan man
> instantiere objekter vha. en simpel gui, og derefter manipulere dem.
> oftest kan disse folk gå et eller flere semestre uden at kunne skrive et
> simpelt stand-alone program.

Lyder ikke som datamatiker uddn. så, her blir vi fandme hørt i det vi skal
lære

--

- RpR
MopedGallery - More addictive than heroine
http://www.MopedGallery.dk
ICQ: 19284098
"4-strokes are full of parts, 2-strokes are full of SPEED!"
--



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste