Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

mange problemer

0 views
Skip to first unread message

Poul Abildgaard

unread,
Jan 15, 1999, 3:00:00 AM1/15/99
to
Hej

Jeg har lige fået hjælp fra denne nyhedsgruppe med at gange to arrays med
hinanden. Så langt så godt. Men nu er jeg rendt ind i et underligt problem.
Jeg skal gange et indtastet cpr-nr med et forud initialiseret array, men
summen af multiplikationen er helt hen i vejret. Jeg har lavet et lille
kontrolforsøg med to andre arrays og det fungerer perfekt.
Er der nogen, der kan hjælpe mig? (Jeg ved ikke om det er god tone, men nu
indsætter jeg hele mit foreløbige program, så I har en chance for at se
strukturen og om jeg har gjort et eller andet galt.

På forhånd tak
Poul A.

----------------------------------------------------------
import java.io.*;

public class cprnr {

public static void main (String args[]) throws IOException {

char date[];
String cpr;
int sum = 0;
int control; // = date[9];
char array1[] = {4,3,2,7,6,5,4,3,2};
double checkCiffer = 0;

System.out.print ("Indtast cpr-nummer: ");
BufferedReader keyboardInput = new BufferedReader( new InputStreamReader
(System.in));
cpr = keyboardInput.readLine();

date = cpr.toCharArray();
control = date[9];

for (int i = 0; i < array1.length; i++) {

sum += (array1[i] * date[i]); //hvorfor dur denne metode ikke?
//f.eks. bliver mit cpr-nr.s resultat
1796,
//hvor det burde v‘re 68
}

checkCiffer = (11 - Math.ceil (sum % 11) );

//formlen er s†dan: det sidste nummer i cpr.nr f.eks. 9 = 11 - (sum %
11)
//hvor sum = array1 + date


if (control == checkCiffer )
System.out.println ("Dit cpr-nummer er ok!");

else
System.out.println ("Dit cpr-nummer er ikke ok! Indtast igen: ");

System.out.println ("Summen er: " + sum);
System.out.println ("date-arrayet er: " + date);
System.out.println ("Kontrolciffer er: " + date[9]);
System.out.println ( 11 - Math.ceil (sum % 11) );

char z[] = {0,2,4}; //en lille kontrol-array-udregning, der viser, at
char x[] = {2,4,6,8}; //logikken en god nok. Hvorfor virker det ikke med
int tjeckArraySum = 0; //array1 og date?

for (int j = 0; j < z.length; j++) {

tjeckArraySum += (z[j] * x[j]); //resultatet skal v‘re 32

}
System.out.println ("tjekArraySum er: " + tjeckArraySum);
//resulatet stemmer

}

}


Mads Andersen

unread,
Jan 16, 1999, 3:00:00 AM1/16/99
to
> date = cpr.toCharArray();
> control = date[9];
>
> for (int i = 0; i < array1.length; i++) {
>
> sum += (array1[i] * date[i]); //hvorfor dur denne metode ikke?
> //f.eks. bliver mit cpr-nr.s resultat
1796,
> //hvor det burde v‘re 68
> }

Fordi date er et char-array. Du ganger ascii-værdien af de enkelte cifre i
cpr sammen med array1...

Prøv med:

sum += (array1[i] * (((int)date[i])-((int)'0')));

Mvh. Madsie

0 new messages