Newsgroup: it.comp.java
Titolo: Funzione Codice Fiscale - Calcola codice di controllo - Mi sa che ho sbagliato qualche cosa

In questa funzione
public static char CalcolaCodiceControllo(String CF) {
    int i, codcon;
    String CodiciControllo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char[] CodFis = CF.toCharArray();
    String cs;
    char cc;
    codcon =0;
    for (i = 0; i < CF.length(); i++) {
          if (Odd(i)) {
              codcon=codcon+ValoreCarPosDispari(CodFis[i]);
          } else {
              codcon=codcon+ValoreCarPosPari(CodFis[i]);
          }
    }
    codcon = codcon % 26;
    String str = "" + codcon;
    JOptionPane.showMessageDialog(null," "+str );
    cs = Mid(CodiciControllo, codcon,1);
    cc = cs.charAt(0);
    return(cc);
}
C'è qualchosa che non va,  ma non capisco cosa?
in basso allego le funzioni Valori pari e Dispari
Mi date una mano?
public static int ValoreCarPosPari(char c){
     switch (c) {
         case    '0': return(0);
         case    '1': return(1);
         case    '2': return(2);
         case    '3': return(3);
         case    '4': return(4);
         case    '5': return(5);
         case    '6': return(6);
         case    '7': return(7);
         case    '8': return(8);
         case    '9': return(9);
         case    'A': return(0);
         case    'B': return(1);
         case    'C': return(2);
         case    'D': return(3);
         case    'E': return(4);
         case    'F': return(5);
         case    'G': return(6);
         case    'H': return(7);
         case    'I': return(8);
         case    'J': return(9);
         case    'K': return(10);
         case    'L': return(11);
         case    'M': return(12);
         case    'N': return(13);
         case    'O': return(14);
         case    'P': return(15);
         case    'Q': return(16);
         case    'R': return(17);
         case    'S': return(18);
         case    'T': return(19);
         case    'U': return(20);
         case    'V': return(21);
         case    'W': return(22);
         case    'X': return(23);
         case    'Y': return(24);
         case    'Z': return(25);
         default: return(-1);
     }
}
public static int ValoreCarPosDispari(char c){
   switch (c) {
         case    '0': return(1);
         case    '1': return(0);
         case    '2': return(5);
         case    '3': return(7);
         case    '4': return(9);
         case    '5': return(13);
         case    '6': return(15);
         case    '7': return(17);
         case    '8': return(19);
         case    '9': return(21);
         case    'A': return(1);
         case    'B': return(0);
         case    'C': return(5);
         case    'D': return(7);
         case    'E': return(9);
         case    'F': return(13);
         case    'G': return(15);
         case    'H': return(17);
         case    'I': return(19);
         case    'J': return(21);
         case    'K': return(2);
         case    'L': return(4);
         case    'M': return(18);
         case    'N': return(20);
         case    'O': return(11);
         case    'P': return(3);
         case    'Q': return(6);
         case    'R': return(8);
         case    'S': return(12);
         case    'T': return(14);
         case    'U': return(16);
         case    'V': return(10);
         case    'W': return(22);
         case    'X': return(25);
         case    'Y': return(24);
         case    'Z': return(23);
         default: return(-1);
   }
}

 C'è qualchosa che non va,  ma non capisco cosa?
Devi dirci due cose:
  - il risultato atteso
  - il risultato ottenuto

Sarebbe molto meglio mettere la seguente:
	default: throw new IllegalArgumentException("c:" + c);
Altrimeni non ti accorgi di quando la chiami male.
Cmq potresti scriverla semplicemente così:
	return c-'0';
-- 
Andrea Francia
http://www.andreafrancia.it/

 
Sono nuovo di Java, molto nuovo e provengo da delphi
io codice che passo è SCZVCN71L18H792
il valore atteso è A
lo aggiustato così ma non so se è corretto
il risultato si
public static char CalcolaCodiceControllo(String CF) {
    int i, codcon;
    String CodiciControllo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char[] CodFis = CF.toCharArray();
    String cs;
    char cc;
    codcon =0;
    for (i = 0; i < CF.length(); i++) {
          if (Odd(i)) {
              codcon=codcon+ValoreCarPosPari(CodFis[i]);
          } else {
              codcon=codcon+ValoreCarPosDispari(CodFis[i]);
          }
    }
    codcon = codcon % 26;
    String str = "" + codcon;
    JOptionPane.showMessageDialog(null," "+str );
    cs = Mid(CodiciControllo, codcon+1,1);
    JOptionPane.showMessageDialog(null," "+cs );
    cc = cs.charAt(0);
    return(cc);
}

>    String CodiciControllo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Tu che dici?

 Tu che dici?
Non è un ipotesi da scartare.


 Tu che dici?
Non facevi prima a cercare su internet una funzione di calcolo del 
codice fiscale già fatta? Ce ne saranno un sacco.


 
Una ricerca non attenta mi ha portato sulla pagina seguente:
 
 
http://www.geocities.com/javaisland2001/src/CF.java.html


Andrea Francia ha scritto:

Infatti, quì vi è il codice per verificare un Codice Fiscale, a me 
interessa
crearlo.
In questo modo voglio imparare il Java.
Visto che il  programma codice fiscale  è completo e abbraccia molti 
comandi e
funzioni mi sempra una buona idea.
Considera che provengo da Delphi un buon RAD mono piattaforma.
Con NetBeans 6.5 m1 mi trovo bene (lo utilizzo da 1 settimana), utilizzo 
la modalità
RAD come in delphi e vi è il vandaggio della multi piattaforma.
Borland a suo tempo ha abbandonato la multi piattaforma lper il NET, per 
me ha
sbagliato di tanto, ma ora che con netbeans posso sviluppare in un modo 
simile
voglio cambiare strada e pian piano abbandonare delphi.
Non ho trovato ancora una classe RAD per creare i report in stile 
FastReport, Cristal
etc. sai se c'è ne sono?
Grazie di Tutto
www.scozzaro.it
www.thefox.it

 etc. sai se c'è ne sono?
Io non conosco bene questo ambito ma mi sembra di capire che esista 
Jasper Report. Probabilmente se chiedessi la cosa in un nuovo thread 
mettendo un oggetto specifico avresti maggior probabilità che qualcuno 
che ne sa di piu' ti risponda.
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/relazioni-molti-molti-con-jpa.html