fork download
  1. class Boleto {
  2.  
  3. public static void main(String[] args) {
  4. String codBarras = "23793.44308.90010.000041.33001.250001.3.52830000008091";
  5. String codBarrasLimpo = codBarras.replace(".", "");
  6. int dv = Base10(codBarrasLimpo);
  7. System.out.println(dv);
  8. }
  9.  
  10. public static int Base10(String num){
  11. //variáveis de instancia
  12. int soma = 0;
  13. int resto = 0;
  14. int dv = 0;
  15. String[] numeros = new String[num.length()+1];
  16. int multiplicador = 2;
  17. String aux;
  18. String aux2;
  19. String aux3;
  20.  
  21. for (int i = num.length(); i > 0; i--) {
  22. //Multiplica da direita pra esquerda, alternando os algarismos 2 e 1
  23. if(multiplicador%2 == 0){
  24. // pega cada numero isoladamente
  25. numeros[i] = String.valueOf(Integer.valueOf(num.substring(i-1,i))*2);
  26. multiplicador = 1;
  27. }else{
  28. numeros[i] = String.valueOf(Integer.valueOf(num.substring(i-1,i))*1);
  29. multiplicador = 2;
  30. }
  31. }
  32. // Realiza a soma dos campos de acordo com a regra
  33. for(int i = (numeros.length-1); i > 0; i--){
  34. aux = String.valueOf(Integer.valueOf(numeros[i]));
  35. if(aux.length()>1){
  36. aux2 = aux.substring(0,aux.length()-1);
  37. aux3 = aux.substring(aux.length()-1,aux.length());
  38. numeros[i] = String.valueOf(Integer.valueOf(aux2) + Integer.valueOf(aux3));
  39. }
  40. else{
  41. numeros[i] = aux;
  42. }
  43. }
  44. //Realiza a soma de todos os elementos do array e calcula o digito verificador
  45. //na base 10 de acordo com a regra.
  46. for(int i = numeros.length; i > 0 ; i--){
  47. if(numeros[i-1] != null){
  48. soma += Integer.valueOf(numeros[i-1]);
  49. }
  50. }
  51. resto = soma%10;
  52. dv = 10 - resto;
  53. //retorna o digito verificador
  54.  
  55. return dv;
  56. }
  57. }
Success #stdin #stdout 0.1s 27936KB
stdin
Standard input is empty
stdout
6