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 o campo livre do código de barras juntamente com o seu dígito verificador (Módulo 11) - Boleto Caixa Econômica

Quantidade de visualizações: 1338 vezes
Em outras dicas dessa seção eu mostrei, passo-a-passo, como calcular o dígito verificador do código do cedente para os boletos da Caixa Econômica Federal (Banco 104). O código do cedente, com o seu dígito verificador, e o nosso número do título são essenciais para a montagem do campo livre, usado tanto no código de barras quanto na linha digitável do boleto. Em caso de dúvidas, revise as demais dicas. Prossiga somente se você estiver bem seguro quanto aos conhecimentos anteriores.

Na Especificação do Código de Barras para Bloquetos de Cobrança Sem Registro e Registrada no SIGCB (67.119 v005 micro), o Campo Livre contém 25 posições dispostas da seguinte forma:

a) Código do Cedente, composto de 6 dígitos;

b) DV do Código do Cedente;

c) Nosso Número ? Seqüência 1: 3ª a 5ª posição do Nosso Número;

d) Constante 1 Posição: 1ª posição do Nosso Numero: Tipo de Cobrança (1-Registrada / 2-Sem Registro);

e) Nosso Número ? Seqüência 2: 6ª a 8ª posição do Nosso Número;

f) Constante 2 Posição: 2ª posição do Nosso Número: Identificador da Emissão do Bloqueto (4-Cedente);

g) Nosso Número ? Seqüência 3: 9ª a 17ª posição do Nosso Número;

h) DV do Campo Livre: Dígito Verificador do Campo Livre, calculado através do Modulo 11, conforme código que mostrarei também nessa dica. Nos boletos e arquivos de remessa da Caixa, o Dígito Verificador do Campo Livre admite 0 (zero), diferentemente do DV Geral do Código de Barras (que também mostro como calcular em dicas dessa seção).

O cálculo que mostrarei a seguir é baseado no Módulo 11 e 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 do Cedente e o Nosso Número e retorna o Campo Livre com 24 posições. Em seguida o código chama outra função para calcular o dígito verificador, totalizando as 25 posições:

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

package arquivodecodigos;

/*
  A implementação do método dvCodigoCedente() está
  na dica Boleto Bancário Java - Como calcular o
  Dígito Verificador do Código do Cedente 
  (Módulo 11) - Boleto Caixa Econômica  
*/

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 carteira = "1"; //  
    String emissao = "4"; // cedente
    String nossoNumero = "222333777777777";
    String nossoNumeroCompleto = carteira + emissao + nossoNumero;
    String cedente = "005507";
    int dvCedente = dvCodigoCedente(cedente);
  
    // agora vamos montar as 24 posições do campo livre
    String campoLivre = montarCampoLivre(cedente, dvCedente,
      nossoNumeroCompleto);

    // vamos mostrar o resultado (25 posições)
    System.out.println("O campo livre completo é: " + campoLivre);
  }

  // função que recebe o campo livre
  // e retorna o seu dígito verificador
  public static int dvCampoLivre(String campoLivre){
    // agora vamos definir os índices de múltiplicação
    String indices = "987654329876543298765432";
    // e aqui a soma da multiplicação coluna por coluna
    int soma = 0;
     
    // fazemos a multiplicação coluna por coluna agora
    for (int i = 0; i < campoLivre.length(); i++){
      soma = soma + Integer.parseInt(String.valueOf(campoLivre.charAt(i))) *
        Integer.parseInt(String.valueOf(indices.charAt(i)));
    }
    
    // obtemos o resto da divisão da soma por onze
    int resto = soma % 11;
     
    // subtraímos onze pelo resto da divisão
    int digito = 11 - resto;  	
	 
    // atenção: Se o resultado da subtração for
    // maior que 9 (nove), o dígito será 0 (zero)
    if(digito > 9){
      digito = 0;    
    }
     
    return digito;
  }
  
  // monta as 25 posições do campo livre
  public static String montarCampoLivre(String cedente, 
    int dvCedente, String nossoNumeroCompleto){
	
    // muita atenção às subtrings. Revise e revise
    String campoLivre = cedente + dvCedente +
      nossoNumeroCompleto.substring(2, 5) +
      nossoNumeroCompleto.substring(0, 1) +
      nossoNumeroCompleto.substring(5, 8) +
      nossoNumeroCompleto.substring(1, 2) +
      nossoNumeroCompleto.substring(8, 17);      
        
    // agora vamos calcular o dígito verificador do
    // campo livre
    int dvCampoLivre = dvCampoLivre(campoLivre); 
	
    return campoLivre + dvCampoLivre;  
  }
  
  // função que recebe o nosso número
  // e retorna o seu dígito verificador
  public static int dvNossoNumero(String nossoNumero){
    // o nosso número possui mais que 17 dígitos?
    if(nossoNumero.length() > 17){
      System.out.println("O Nosso Número não pode ter " +
        " mais que 17 dígitos.");
      System.exit(1);	
    }
	
    // agora vamos definir os índices de multiplicação
    String indices = "29876543298765432";
    // e aqui a soma da multiplicação coluna por coluna
    int soma = 0;
     
    // fazemos a multiplicação coluna por coluna agora
    for (int i = 0; i < nossoNumero.length(); i++){
      soma = soma + Integer.parseInt(String.valueOf(nossoNumero.charAt(i))) *
        Integer.parseInt(String.valueOf(indices.charAt(i)));
    }
    
    // obtemos o resto da divisão da soma por onze
    int resto = soma % 11;
     
    // subtraímos onze pelo resto da divisão
    int digito = 11 - resto;  	
	 
    // atenção: Se o resultado da subtração for
    // maior que 9 (nove), o dígito será 0 (zero)
    if(digito > 9){
      digito = 0;    
    }
     
    return digito;
  }
}

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

O campo livre completo é: 0055077222133347777777771

Para não deixar o código desta dica muito longo, eu omiti a função dvCodigoCedente() está na dica Boleto Bancário Java - Como calcular o Dígito Verificador do Código do Cedente (Módulo 11) - Boleto Caixa Econômica.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens

Manipulação de imagens em Java - Como converter uma imagem JPG colorida para uma imagem na escala cinza (gray scale)

Quantidade de visualizações: 11948 vezes
Uma das formas mais comuns de se converter uma imagem colorida para uma imagem na escala cinza (grayscale) é desenhar a imagem colorida em um BufferedImage do tipo TYPE_BYTE_GRAY. Veja o resultado na imagem abaixo:



E agora o código completo para o exemplo:

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

package arquivodecodigos;

import java.awt.*;
import java.io.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
 
public class Estudos extends JFrame{
  private BufferedImage imagem;
  private BufferedImage imagemCinza;
  AreaImagem areaImagem;  
 
  public Estudos(){
    super("Estudos Java");
     
    Container c = getContentPane();
    c.setLayout(new BorderLayout());
     
    JButton btn = new JButton("Carregar Imagem");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          JFileChooser fc = new JFileChooser();
 
          int res = fc.showOpenDialog(null);
          if(res == JFileChooser.APPROVE_OPTION){
        File arquivo = fc.getSelectedFile();  
           
            imagem = null;
           
            try{
              imagem = ImageIO.read(arquivo);
            }
            catch(IOException exc){
              JOptionPane.showMessageDialog(null, 
                "Erro ao carregar a imagem: " + 
                exc.getMessage());
            }
 
            if(imagem != null){
              areaImagem.imagem = imagem;
              areaImagem.repaint();  
            }
          }
        }
      }
    );
 
    JButton btn2 = 
      new JButton("Converter Escala Cinza");
    btn2.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          converterEscalaCinza();
        }
      }
    );
 
    JPanel painel = new JPanel();
    painel.setLayout(new FlowLayout());    
    painel.add(btn);
    painel.add(btn2);
 
    c.add(painel, BorderLayout.SOUTH);
     
    // Cria a área de exibição da imagem
    areaImagem = new AreaImagem();
    c.add(areaImagem, BorderLayout.CENTER);    
     
    setSize(400, 300);
    setVisible(true);
  }
 
  public void converterEscalaCinza(){
    imagemCinza = new BufferedImage(
      imagem.getWidth(), imagem.getHeight(), 
      BufferedImage.TYPE_BYTE_GRAY);
    Graphics g = imagemCinza.getGraphics();
    g.drawImage(imagem, 0, 0, null);
    g.dispose();
    areaImagem.imagem = imagemCinza;
    areaImagem.repaint();
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
 
// Sub-classe de JPanel para exibir a imagem
class AreaImagem extends JPanel{
  public BufferedImage imagem;
 
  public void paintComponent(Graphics g){ 
    super.paintComponent(g);
     
    // desenha a imagem no JPanel
    g.drawImage(imagem, 0, 0, this);
  } 
}



Java ::: Dicas & Truques ::: Strings e Caracteres

Como transformar um StringBuffer em uma String usando o método toString() da classe StringBuffer

Quantidade de visualizações: 29 vezes
Como já vimos em dicas anteriores, um objeto da classe String é imutável, ou seja, quando modificamos o conteúdo de uma String, o interpretador cria um novo objeto, copiando o conteúdo da string anterior para o objeto recém-criado. Já a classe StringBuffer é mutável, ou seja, podemos modificar o seu conteúdo sem a necessidade da criação de um novo objeto.

Você ficará surpreso ao saber que não podemos atribuir uma variável do tipo StringBuffer em uma variável do tipo String e vice-versa. Ao tentarmos fazer isso, os seguintes erros de compilação são exibidos:

a) error: incompatible types: StringBuffer cannot be converted to String
b) error: incompatible types: String cannot be converted to StringBuffer

Assim, sempre que for necessário converter um StringBuffer em uma String, temos que usar o seu método toString(). Veja:

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

package arquivodecodigos;

// Este exemplo mostra como converter um
// StringBuffer em uma String

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Programação Java");
    String resultado = frase.toString(); 
    System.out.println(resultado);
    
    System.exit(0);
  }
} 



Java ::: Fundamentos da Linguagem ::: Modificadores

Programação Orientada a Objetos em Java - Como usar o modificador static em suas aplicações Java

Quantidade de visualizações: 18798 vezes
O modificador static pode ser aplicado a métodos e variáveis. Além disso, este modificador pode ser usado para a inicialização de códigos estáticos de uma classe.

Um recurso marcado com este modificador pertence à uma classe, e não às suas instâncias. Isso quer dizer que podemos acessar métodos ou variáveis estáticas sem a necessidade de criar uma cópia da classe. Veja por exemplo o método main() usado como ponto de entrada para um aplicativo Java:

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

public static void main(String args[]){
  //
}

Como o método main é chamado antes mesmo de qualquer cópia de classes serem criadas, o modificador static se torna essencial. Veja o que acontece se o retirarmos:

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

public class Estudos{
  public void main(String args[]){
    System.out.println("Olá");
    System.exit(0);
  }
}

O código compila sem problemas. Porém, ao tentarmos executar teremos o seguinte erro:

Exception in thread "main" 
java.lang.NoSuchMethodError: main
Vejamos agora o que acontece quando tentamos acessar uma variável não estática a partir de um trecho de código estático:

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

public class Estudos{
  String frase = "Estou aqui!";   

  public static void main(String args[]){
    System.out.println(frase);
    System.exit(0);
  }
}

Ao tentarmos compilar este código teremos o seguinte erro:

Estudos.java:5: non-static variable frase cannot be 
referenced from a static context
 System.out.println(frase);
                       ^
1 error
Este erro aconteceu porque a variável frase foi definida sem o modificar static. Isso faz com que ela pertença à instâncias da classe, ou seja, para acessá-la teríamos que criar uma cópia da classe Estudos. Experimente alterá-la para:

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

static String frase = "Estou aqui!";

Execute o programa novamente e veja como o erro desaparece.

Para demonstrar como recursos estáticos pertencem mesmo à classe e não às suas cópias, considere o seguinte exemplo:

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

public class Estudos{
  public static void main(String args[]){
    for(int i = 0; i < 5; i++){
      Cliente cliente = new Cliente();
      System.out.println("Sou o cliente número: " + 
        cliente.quant);
    } 
   
    System.exit(0);
  }
}

class Cliente{
  public static int quant = 0;   

  public Cliente(){
    quant++;
  }
}

Ao compilar e executar este código você terá o seguinte resultado:

Sou o cliente número: 1
Sou o cliente número: 2
Sou o cliente número: 3
Sou o cliente número: 4
Sou o cliente número: 5
Isso aconteceu porque a classe Cliente possui uma variável estática que é incrementada todas as vezes que o construtor da classe é chamado.

Veremos agora o uso do modificador static na inicialização de blocos de código estáticos. Observe o código:

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

public class Estudos{
  public static void main(String args[]){
    for(int i = 0; i < 5; i++){
      Cliente cliente = new Cliente();
      System.out.println("Sou o cliente número: " + 
        cliente.quant);
    } 
   
    System.exit(0);
  }
}

class Cliente{
  public static int quant = 0;   

  public Cliente(){
    quant++;
  }  

  static{
    System.out.println("Bloco estático");
  }
}

Compile e execute este exemplo. Você terá o seguinte resultado:

Bloco estático
Sou o cliente número: 1
Sou o cliente número: 2
Sou o cliente número: 3
Sou o cliente número: 4
Sou o cliente número: 5
Veja que criamos 5 cópias da classe Cliente. Porém, o bloco de código estático foi executado apenas uma vez, e antes mesmo do construtor da classe.


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

Ano: 2023 Banca: ACCESS Órgão: Prefeitura de Dores do Indaiá - MG Prova: ACCESS - 2023 - Prefeitura de Dores do Indaiá - MG - Agente Fiscal

Com base no universo da ética, analise as afirmativas a seguir:

I. A ética depende dos valores que a pessoa carrega, e pode, assim, ser adaptável às situações em que vive, dependendo dos seus interesses e carga cultural.

II. O estudo da ética demonstra que a consciência moral nos inclina para o caminho da virtude, que seria uma qualidade própria da natureza humana.

III. Um homem para ser ético precisa necessariamente ser virtuoso, ou seja, praticar o bem usando a liberdade com responsabilidade constantemente.

Assinale

A) se apenas as afirmativas I e II estiverem corretas.

B) se apenas as afirmativas I e III estiverem corretas.

C) se apenas as afirmativas II e III estiverem corretas.

D) se todas as afirmativas estiverem corretas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

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

palavra = "ESTUDAR"
resultado = palavra[::-1]
print(resultado)

A) ESTUDAR

B) EST

C) RADUTSE

D) TUDAR

E) ESTUDA
Verificar Resposta Estudar Cards Todas as Questões

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

Responsabilidade civil no código de defesa do consumidor

O fornecedor e o prestador de serviço estarão livres do dever de indenizar caso não haja dano reparável e ficar comprovado que:

A) a culpa foi exclusiva do consumidor ou de terceiro.

B) a culpa foi do fornecedor.

C) ninguém teve culpa.

D) todos tiveram culpa.

E) não importa quem teve culpa.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual das formas abaixo é válida para a declaração e inicialização de variáveis em JavaScript?

A) int a = 5;

B) declare a = 5;

C) var a = 5;

D) def a = 5;

E) variable a = 5;
Verificar Resposta Estudar Cards Todas as Questões

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

Viscosidade dinâmica

A viscosidade cinemática de um óleo lubrificante é de 0,028m2/s, e seu peso específico relativo é de 0,85. Qual a sua viscosidade dinâmica, em Pa.s? Sabe-se que a aceleração gravitacional local é de 10m/s2.

A) 233Pa.s.

B) 85Pa.s.

C) 85000Pa.s.

D) 23,8Pa.s.

E) 2,38Pa.s.
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á 60 usuários muito felizes estudando em nosso site.