Google Grupper understøtter ikke længere nye Usenet-opslag eller -abonnementer. Tidligere indhold er fortsat synligt.

mange problemer

0 visninger
Gå til det første ulæste opslag

Poul Abildgaard

ulæst,
15. jan. 1999, 03.00.0015.01.1999
til
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

ulæst,
16. jan. 1999, 03.00.0016.01.1999
til
> 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 nye opslag