Você está aqui: Java ::: Boletos Bancários, Arquivos de Remessa e Retornos do Banco ::: Caixa Econômica Federal - Banco 104

Boleto Bancário Java - Como montar a linha digitável (representação numérica do código de barras) e seu dígito verificador (Módulo 10) - Boleto Caixa Econômica

Quantidade de visualizações: 2272 vezes
Esta dica fecha nossa série de estudos sobre os boletos bancários da Caixa Econômica (Banco 104). Na dica anterior vimos como montar o código de barras e o seu dígito verificador. E, uma vez montado o código de barras completo, já temos todas as informações para montar sua representação numérica, ou seja, a linha digitável do boleto. Dessa forma, é importante que você entenda bem as funções demonstradas nas dicas anteriores.

Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), a linha digitável, ou representação numérica, para a cobrança contém cinco campos, conforme discriminação a seguir:

1º Campo - Composto por: código do banco (posições 1 a 3 do código de barras), código da moeda (posição 4 do código de barras), as cinco primeiras posições do campo livre (posições 20 a 24 do código de barras) e digito verificador deste campo;

2º Campo - Composto pelas posições 6 a 15 do campo livre (posições 25 a 34 do código de barras) e digito verificador deste campo;

3º Campo - Composto pelas posições 16 a 25 do campo livre (posições 35 a 44 do código de barras) e digito verificador deste campo;

4º Campo - Dígito verificador geral do código de barras (posição 5 do código de barras);

5º Campo - Composto pelo "fator de vencimento" (posições 6 a 9 do código de barras) e pelo valor nominal do documento (posições 10 a 19 do código de barras), com a inclusão de zeros entre eles até compor as 14 posições do campo e sem edição (sem ponto e sem vírgula). Não obstante existam 10 posições, o valor nominal do documento não poderá exceder R$ 9.999.999,99.

O cálculo que mostrarei a seguir está de acordo com as instruções do Manual de Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária Caixa - SIGCB - Versão 67.118 v024 micro e Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro). Tenha certeza de verificar sua versão do manual antes de usar o código apresentado.

Dito isso, veja o código Java completo para uma função que recebe o código de barras completo e retorna a linha digitável, devidamente espaçada e com os pontos, conforme recomendações do manual:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

/*
  ATENÇÃO: As função complementares e já vistas em outras
  dicas dessa seção foram omitidas deste código
*/

public class Estudos{
  public static void main(String[] args){
    // ATENÇÃO: Se você ainda não entende os dados abaixo.
    // revise as dicas anteriores antes de continuar
    String banco = "104";
    String moeda = "9";
    String carteira = "1"; //  
    String emissao = "4"; // cedente
    String nossoNumero = "222333777777777";
    double valor = 321.12; // sempre duas casas decimais
    String vencimento = "23/08/2006";
    int fator = fatorVencimento(vencimento);
    String nossoNumeroCompleto = carteira + emissao +
      nossoNumero;
    String cedente = "005507";
    int dvCedente = dvCodigoCedente(cedente);
    String campoLivre = montarCampoLivre(cedente, dvCedente,
      nossoNumeroCompleto);
    String codigoBarras = montarCodigoBarras(banco, moeda, fator,
      valor, campoLivre);
  
    // agora que temos o código de barras completo, vamos
    // montar a linha digitável
    String linhaDigitavel = montarLinhaDigitavel(codigoBarras);
    // e mostramos o resultado
    System.out.println("A linha digitável completa é: " +
      linhaDigitavel);
  }
 
  // função que recebe o código de barras completo
  // e monta a linha digitável do boleto
  public static String montarLinhaDigitavel(String codigoBarras){
    // vamos nos concentrar no primeiro campo
    String campo1 = codigoBarras.substring(0, 3) +
      codigoBarras.substring(3, 4) + codigoBarras.substring(19, 24);
    
    // agora o segundo campo
    String campo2 = codigoBarras.substring(24, 34);   
    
    // agora o terceiro campo
    String campo3 = codigoBarras.substring(34, 44);
     
    // agora o quarto campo
    String campo4 = codigoBarras.substring(4, 5);
    
    // finalmente o quinto campo
    String campo5 = codigoBarras.substring(5, 9) +
      codigoBarras.substring(9, 19);
    
    System.out.println(campo5);
    
    String linhaDigitavel = campo1.substring(0, 5) + "." +
      campo1.substring(5, 9) +  dvLinhaDigitavel(campo1) + " "
      + campo2.substring(0, 5) + "." + campo2.substring(5, 10) +
      dvLinhaDigitavel(campo2) + " " + campo3.substring(0, 5) +
      "."  + campo3.substring(5, 10) + dvLinhaDigitavel(campo3) +
      " " + campo4 + " " + campo5;

    return linhaDigitavel;  
  }
  
  // atenção a esta função. Aqui nós usamos o Módulo 10
  public static int dvLinhaDigitavel(String valor){
    // vamos inverter o valor
    valor = new StringBuffer(valor).reverse().toString();
    // vamos definir os índices de múltiplicação
    String indices = "2121212121";
    // e aqui a soma da multiplicação coluna por coluna
    int soma = 0, res = 0, digito = -1;
	
    // fazemos a multiplicação coluna por coluna agora
    for (int i = 0; i < valor.length(); i++){
      res = Integer.parseInt(String.valueOf(valor.charAt(i))) *
        Integer.parseInt(String.valueOf(indices.charAt(i)));
	   
      // Quando o resultado da multiplicação for um número 
      // com 2 dígitos, somar os 2 algarismos.
      // Ex: (10: 1+0 = 1). 
      if(res > 9){
	// vamos somar os dois algarismos
	String temp = String.valueOf(res);
        res = Integer.parseInt(String.valueOf(temp.charAt(0))) +
          Integer.parseInt(String.valueOf(temp.charAt(1)));  
      }
	   
      soma = soma + res;   
    }
	
    // obtemos o resto da divisão da soma por 10
    int resto = soma % 10;
    
    //  Se o resto da divisão for 0 (zero), o DV 
    // será 0 (zero).
    if(resto == 0){
      digito = 0;	
    }
    // Se o Total da Soma for inferior a 10, o DV corresponde
    // à diferença entre 10 e o Total da Soma
    else if(soma < 10){
      digito = 10 - soma;	
    }
    else{ 
      // subtraímos onze pelo resto da divisão
      digito = 10 - resto;  	
    }
	
    return digito;
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A linha digitável completa é: 10490.05505 77222.133348 77777.777713 4 32420000032112

Para não deixar o código desta dica muito longo, eu omiti algumas funções, que podem ser facilmente encontradas nas dicas anteriores.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em Java

Quantidade de visualizações: 1323 vezes
Nesta dica mostrarei como podemos tirar proveito do Teorema de Pitágoras para obter a medida do cateto adjascente quando temos as medidas da hipotenusa e do cateto oposto. Este teorema diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos", o que torna a nossa tarefa, na linguagem Java, muito fácil.

Comece observando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos que fazer é mudar a fórmula para:

\[b^2 = c^2 - a^2\]

Veja que agora o quadrado do cateto adjascente é igual ao quadrado da hipotenusa menos o quadrado do cateto oposto. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo.

Veja agora como esse cálculo é feito em linguagem Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String args[]){
    double c = 36.056; // medida da hipotenusa
    double a = 20; // medida do cateto oposto
  
    // agora vamos calcular a medida da cateto adjascente
    double b = Math.sqrt(Math.pow(c, 2) - Math.pow(a, 2));
 
    // e mostramos o resultado
    System.out.println("A medida do cateto adjascente é: " +
      b);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A medida do cateto adjascente é: 30.00058559428465

Como podemos ver, o resultado retornado com o código Java confere com os valores da imagem apresentada.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Java - Pesquisando um valor em uma matriz de int e retornando o índice no qual o mesmo foi encontrado

Quantidade de visualizações: 9295 vezes
Pergunta/Tarefa:

Escreva um programa Java GUI ou console que declara, constrói e inicializa uma matriz de 5 inteiros. Em seguida peça ao usuário para informar um valor inteiro e informe se o valor lido está contido na matriz. Se o valor for encontrado na matriz, retorne seu índice (lembre-se de que os índices dos elementos em uma matriz Java começam em 0). A declaração, construção e inicialização da matriz pode ser feita da seguinte forma:

// declara, constrói e inicializa uma matriz de 5 inteiros
int valores[] = {4, 21, 8, 120, 1};
Dica: Na resolução abaixo eu usei um objeto JOptionPane para ler o valor a ser pesquisado. Se preferir, use um objeto da classe Scanner para leitura.

Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import javax.swing.JOptionPane;

public class Estudos {
  public static void main(String[] args) {
    // declara, constrói e inicializa uma matriz de 5 inteiros
    int valores[] = {4, 21, 8, 120, 1};
        
    // vamos ler um valor inteiro
    int pesquisa = Integer.parseInt(JOptionPane.showInputDialog("Valor:"));
        
    // vamos verificar se o valor está contido na matriz e retornar seu índice
    int pos = -1; // índice não existente na matriz
    for(int i = 0; i < valores.length; i++){
      if(valores[i] == pesquisa){
        pos = i; // encontrou? vamos anotar este índice
        break;
      }
    }
        
    // vamos mostrar o resultado
    if(pos > -1){
      JOptionPane.showMessageDialog(null, "O valor foi encontrado no índice: " +
        pos);
    }
    else{
      JOptionPane.showMessageDialog(null, "O valor não foi encontrado na matriz");
    }
  }
}

Uma idéia na resolução deste exercício é inicializar a variável que guardará o índice do elemento pesquisado com o valor -1. Assim, se no final da pesquisa o valor ainda for -1, sabemos que o elemento não foi encontrado.


Java ::: Pacote java.util ::: Iterator

Como usar objetos da interface Iterator do Java em suas aplicações

Quantidade de visualizações: 2805 vezes
Um objeto da interface Iterator<E>, no pacote java.util, é usado para percorrer os elementos de uma coleção. Um Iterator é usado com frequencia em substituição a um Enumeration. Há duas diferenças principais entre os dois:

a) Um Iterator permite a remoção de elementos na coleção sendo percorrida no momento.
b) Os métodos do Iterator são mais curtos e apresentam melhoria em relação aos métodos do Enumeration.

As subinterfaces conhecidas de Iterator<E> são ListIterator<E> e XMLEventReader. As classes conhecidas que implementam esta interface são BeanContextSupport.BCSIterator, EventReaderDelegate e Scanner.

Veja um trecho de código no qual usamos um Iterator para percorrer e exibir os valores dos elementos de uma ArrayList:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.ArrayList;
import java.util.Iterator;

public class Estudos{
  public static void main(String[] args){
    // vamos criar uma ArrayList
    ArrayList<String> pessoas = new ArrayList();
    pessoas.add("Osmar");
    pessoas.add("Carlos");
    pessoas.add("Fernanda");
    
    // vamos obter um Iterator para a lista e percorrer todos os elementos
    for(Iterator<String> pessoa = pessoas.iterator(); pessoa.hasNext();){
      System.out.println(pessoa.next());
    }
  }
}

Ao executar este exemplo nós teremos o seguinte resultado:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

Osmar
Carlos
Fernanda



Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil dos prepostos e preponentes

Com relação as definições do preposto, assinale a alternativa correta.

A) O preposto pode negociar por conta própria ou de terceiro, e participar indiretamente de operação idêntica a que lhe foi cometida.

B) O preposto não pode, sem autorização escrita, fazer-se substituir no desempenho da preposição, sob pena de responder pessoalmente pelos atos do substituto e pelas obrigações por ele contraídas.

C) Considera-se inválida a entrega de papéis, bens ou valores ao preposto, encarregado pelo preponente, se este os recebeu sem protesto.

D) As limitações contidas na outorga de poderes podem ser opostas a terceiros, dependem do arquivamento e averbação do instrumento no Registro Público de Empresas Mercantis.

E) No exercício de suas funções, os prepostos são pessoalmente responsáveis, perante terceiros, pelos atos culposos e atos dolosos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Fases de uma obra

Em relação aos conceitos envolvidos na elaboração de um orçamento de obras, assinale a alternativa correta.

A) Custos diretos são aqueles em que é necessário estipular um fator de rateio para que sejam apropriados aos serviços.

B) Devem ser incluídas no título "desmobilização" de um orçamento as despesas com locação, fechamento, tapumes, demolições e relocações.

C) A administração do canteiro de obras e as despesas decorrentes da administração da empresa fazem parte dos custos diretos de uma obra.

D) Como regra, orçam-se os preços na construção civil por serviço, determinando-os segundo a produção de composições unitárias.

E) Em um solo, caso seja necessário escavar 1 m3 do terreno, deve-se orçar, no item referente à escavação do material, o valor 1,4 m3.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual é o resultado da execução do seguinte código JavaScript?

var resultado = Boolean(5 < 3);
document.write(resultado);

A) true

B) NaN

C) false

D) Um erro de execução
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Perfil em aço

O processo de conversão do minério de ferro em aço começa com a fundição do minério de ferro em ferro fundido. Por sua vez, este é produzido em alto-forno, com camadas alternadas compostas por alguns materiais em uma quantidade exata que vai dar a resistência correta aos futuros perfis de aço.

Assinale a alternativa que apresenta corretamente os materiais que compõem as camadas para a fabricação do ferro fundido.

A) Minério de ferro, coque e calcário moído.

B) Minério de ferro, manganês e silício.

C) Minério de ferro, fósforo e enxofre.

D) Minério de ferro, oxigênio e nitrogênio.

E) Nitrogênio, fósforo e silício.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Turbomáquinas

Uma turbomáquina é um dispositivo no qual a energia é transferida para ou de um fluido em movimento contínuo. A linha da lâmina gira e altera a pressão do fluido, realizando trabalhos no fluido (bomba hidráulica) ou realizando o trabalho na linha da lâmina pelo fluido (turbina).

Qual classe de máquinas hidráulicas é especialmente excluída quando é considerada essa definição apresentada?

A) Essa definição exclui a classe de turbinas eólicas, pois, apesar de referenciar o termo genérico "turbina", não engloba os dispositivos cujos fluidos não são a água e cuja a vazão do fluido pode ser variável.

B) Essa definição exclui as máquinas hidráulicas que contêm um eixo de rotação. Nesse caso, foram excluídos, especialmente, os motores hidráulicos, um grupo amplo e com muitos dispositivos com vazão alta.

C) Essa definição exclui a classe de dispositivos chamados máquinas de deslocamento positivo. Nesses dispositivos, há limites móveis que forçam o fluido a se mover ou são forçados a se mover pelo fluido.

D) Essa definição exclui a classe de dispositivos chamados motores elétricos. Tais máquinas hidráulicas são responsáveis por receber a energia mecânica produzida por dispositivos, como as turbinas eólicas.

E) Essa definição exclui a classe de dispositivos chamados máquinas de deslocamento negativo. Nesses dispositivos, há limites móveis que forçam o fluido a se mover ou são forçados a se mover pelo fluido.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 53 usuários muito felizes estudando em nosso site.