Ola pessoal… estou com problemas nestes 2 metodos que estão me devolvendo resultados diferentes do que o código ASP transmitia:
é um sistema de Boleto Bancario…
Estes 2 métodos devem devolver o resultado de 3 digitos verificadores do boleto…
Método 1
ASP:
[code]FUNCTION CALCDIG10(cadeia)
dim mult
dim total
dim pos,res
mult=(len(cadeia) mod 2)
mult=mult+1
total=0
for pos=1 to len(cadeia)
res= mid(cadeia, pos, 1) * mult
if res>9 then
res=int(res/10) + (res mod 10)
end if
total=total+res
if mult=2 then
mult=1
else
mult=2
end if
next
total=((10-(total mod 10)) mod 10 )
CALCDIG10=total
END FUNCTION
[/code]
JAVA:
public String do_calculodig10(String cadeia){
int total = 0;
int res;
int mult = (cadeia.length()%2)+1;
for (int pos = 1; pos <= cadeia.length(); pos++){
res = mult*Integer.parseInt(cadeia.charAt(pos-1)+"");
if(res>9){
res = (int)res/10 + res%10;
}
total = total + res;
if(mult == 2){
mult = 1;
}
else{//60
mult = 2;
}
}
total = ((10-(total % 10)) % 10);
return ""+total;
}
Método 2
ASP:
[code]FUNCTION CALCDIG11(cadeia,limitesup,lflag)
'**************************
dim mult
dim total
dim nresto
dim ndig
dim pos
mult=1 + (len(cadeia) mod (limitesup-1))
if mult=1 then
mult=limitesup
end if
total=0
for pos=1 to len(cadeia)
total=total+(mid(cadeia,pos,1) * mult)
mult=mult-1
if mult=1 then
mult=limitesup
end if
Next
nresto=(total mod 11)
if lflag = 1 then
calcdig11=nresto
else
if nresto=0 or nresto=1 or nresto=10 then
ndig=1
else
ndig=11 - nresto
end if
calcdig11=ndig
end if
'*************************
END FUNCTION[/code]
JAVA:
public int do_calculodig11(String cadeia,int limitesup,int lflag){
int mult = 1 + (cadeia.length()%(limitesup-1));
int total = 0;
if(mult==1){
mult = limitesup;
}
for(int pos = 1; pos <= cadeia.length(); pos++){
total = total + (mult*Integer.parseInt(cadeia.charAt(pos-1)+""));
if (mult==1){
mult = limitesup;
}
}
int resto = total % 11;
if(lflag == 1){//80
return resto;
}
else{
if (resto == 0 || resto == 1 || resto == 10){
total = 1;
}
else{
total = 11-resto;
}
return total;
}
}
Alguem consegue notar alguma diferença que pode estar afetando o código?! :???:
o Código realmente esta errado :?