Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Dado um vetor de inteiros positivos, encontre a maior soma possível de N elementos consecutivos - Desafio de Programação Resolvido em Java

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

Dado o vetor:

// vamos declarar e construir um vetor de inteiros positivos
int valores[] = {8, 1, 9, 3, 5, 2, 4, 3};
Escreva um programa Java contendo uma função que receberá um vetor e um número inteiro N. Este método deverá retornar a maior soma possível de N elementos consecutivos no vetor.

Sua saída deverá ser parecida com:

A maior soma possível de N elementos consecutivos é: 12
Resposta/Solução:

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

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

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // vamos declarar e construir um vetor de inteiros positivos
    int valores[] = {8, 1, 9, 3, 5, 2, 4, 3};
    // vamos chamar o método que retorna a maior soma dos N elementos
    // consecutivos do vetor
    System.out.println("A maior soma possível de N elementos consecutivos é: " +
      maiorSomaConsecutiva(valores, 2));
  }

  // método que retorna a maior soma possível de N elementos
  // consecutivos do vetor
  public static int maiorSomaConsecutiva(int vetor[], int n) {
    int soma = 0;
    int soma_temp = 0;
    
    // o primeiro passo é obter a soma dos N primeiros elementos
    for (int i = 0; i < n - 1; i++) {
      soma_temp += vetor[i];
    }
    
    // varremos o vetor a partir do N - 1 índice até o último
    // elemento
    for (int i = n - 1; i < vetor.length; i++) {
      // adicionamos o valor atual à soma temporária
      soma_temp += vetor[i];
      
      // a soma temporária é maior que a maior soma?
      if (soma_temp > soma) {
        soma = soma_temp;
      }
      
      // retiramos da soma o valor do elemento anterior
      soma_temp -= vetor[(i - n) + 1];
    }
    
    // retornamos a soma
    return soma;
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java

Simulação de Sistema Bancário usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console

Quantidade de visualizações: 16344 vezes
Sobre este projeto Java

Durante estes anos que tenho trabalhado como freelancer, mais da metade das requisições dos meus clientes foram ajuda para desenvolver idéias de programação orientada a objetos em Java para projeto de faculdades e universidades.

Com isso percebi que boa parte dos alunos e iniciantes em programação orientada a objetos já entendem toda a teoria. O que lhes falta é prática, ou seja, aplicar estes conhecimentos em aplicações do mundo real.

Pensando nisso, apresento a você um projeto muito interessante e que, se bem entendido e praticado, o ajudará a desenvolver qualquer tipo de aplicação, seja comercial ou para solucionar problemas cotidianos.

O projeto Java apresentado nesta dica é uma simulação completa de um Sistema Bancário, tudo com código fonte em Java, comentado, com variáveis em português, em um nível médio de programação, para facilitar o entendimento de todos.

Nesta simulação nós temos a criação de classes Java, construtores, encapsulamento de dados, agregação e composição, métodos com retorno e sem retorno, variáveis estáticas, variáveis públicas e privadas, e relacionamento entre objetos (um para um, um para muitos, muitos para um) usando ArrayList. Sim, o projeto faz uso extensivo de ArrayList, o que o torna muito rico para o aprendizado e fixação dos conhecimentos da linguagem Java e suas classes principais.

O Diagrama de Classes Java

Antes de falarmos mais sobre o projeto, dê uma boa olhada no seu diagrama de classes:



Como a aplicação está estruturada?

Como podemos ver no diagrama de classes, nós temos uma classe Sistema que contém zero ou vários objetos da classe Banco (relacionamento um para muitos). A classe Banco, por sua vez, possui uma ArrayList de objetos da classe Agência, ou seja, mais um relacionamento um para muitos, já que cada agência pertence a um único banco.

Cada agência pode possuir zero ou mais contas, e cada conta possui um ArrayList de objetos da classe Transação, o que nos permite registrar todas as operações nas contas e emitir o extrato bancário, com os débitos, créditos e transferências entre contas.

Tudo isso é feito por meio de vários menus de opções, como podemos ver na imagem a seguir:



Devo usar ArrayList do Java para desenvolver o sistema?

Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos bancos, pessoas, agências e contas quisermos.

Dessa forma, veja, por exemplo, o trecho de código que cria um novo banco:

switch(opcao){
  case 1: // vamos cadastrar um novo banco
    System.out.print("\nNúmero do Banco: ");
    String numeroBanco = entrada.nextLine();
    System.out.print("Nome do Banco: ");
    String nomeBanco = entrada.nextLine();
        
    // vamos incrementar o contador de bancos
    Banco.contadorBancos++;
        
    // agora vamos criar um novo objeto da classe Banco
    Banco b = new Banco(Banco.contadorBancos, nomeBanco,
      numeroBanco);
    // e o adicionamos no ArrayList de bancos
    bancos.add(b);
        
    // e finalmente mostramos uma mensagem de sucesso.
    System.out.println("\nO banco criado com sucesso");
        
    break;


Note que este trecho de código é parte do case da opção Novo Banco do menu Gerenciar Bancos. Veja como usamos uma variável estática contadorBancos da classe Banco para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada banco.

Veja agora mais um trecho de código muito interessante. Trata-se

case 3: // vamos pesquisar uma conta
  System.out.print("\nId, número ou nome cliente da conta: ");
  pesquisaConta = entrada.nextLine();
  // chamamos o método que pesquisa a conta
  temp = pesquisarConta(agenciaAtual, pesquisaConta);
  if(temp == null){ // conta não encotrada
    System.out.println("\nConta não encontrada na agência.");  
  }
  else{
    // mostra a conta encontrada
    System.out.println("\nId da conta bancária: " +
      temp.getId());
    System.out.println("Número da conta: " +
      temp.getNumero());
    System.out.println("Cliente: " + 
      temp.getCliente().getNome());
    System.out.println("Agência: " + agenciaAtual.getNumero() +
      " - " + agenciaAtual.getCidade());
    System.out.println("Banco: " + 
      bancoAtual.getNumero() + " - " + bancoAtual.getNome());
    System.out.println("Saldo atual: " + temp.getSaldo());
    System.out.println("Limite atual: " + temp.getLimite());
  }
        
  break;


Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real.

O fechamento com chave de ouro

O produto final da aplicação Java deverá ser um extrato bancário mostrando os dados da conta escolhida, o histórico de transações com data, tipo da transação e valor, e o saldo atual da conta, com ou sem limite. Veja na imagem abaixo a formatação apresentada (mesmo em modo texto):



Como posso obter este código fonte?

Os links para você baixar todas as versões deste projeto estão abaixo:

1) SBJCNB-A - Sistema Bancário em Java com Código Fonte Versão Console - NetBeans IDE - Faça o Download.

2) SBJCNB-B - Sistema Bancário em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE - Faça o Download.

Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes.


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: 11994 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 ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de Java - Percorrer todos os elementos de um array, exibir a soma dos valores positivos e a quantidade de valores negativos

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

Considere o seguinte vetor de inteiros:

// um array de inteiros contendo sete elementos
int valores[] = {-3, 9, 12, -34, -2, 20, 10};
Escreva um programa Java console ou GUI que usa um laço for para percorrer todos os elementos deste array e exibir a soma dos valores positivos e a quantidade de valores negativos.
Seu programa deverá exibir uma saída com a mensagem:

A soma dos valores positivos é: 51
A quantidade de valores negativos é: 3

Resposta/Solução:

Veja a resolução comentada deste exercício em 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){
  // um array de inteiros contendo sete elementos
  int valores[] = {-3, 9, 12, -34, -2, 20, 10};
    
  // o primeiro passo é criar uma variável que vai receber a soma
  // dos valores positivos
  int soma_positivos = 0;

  // agora uma variável para receber a quantidade de valores negativos
  int quant_negativos = 0;

  // agora vamos usar uma laço for para percorrer todos os elementos
  // do array
  for(int i = 0; i < valores.length; i++){
    // vamos verificar se o valor do elemento atual é negativo
    if(valores[i] < 0){
      quant_negativos++;  
    }
    else{ // o valor é positivo
      soma_positivos = soma_positivos + valores[i]; 
    }
  }

  // vamos exibir a soma dos valores positivos
  System.out.println("A soma dos valores positivos é: " + soma_positivos);

  // vamos exibir a quantidade de valores negativos
  System.out.println("A quantidade de valores negativos é: " + quant_negativos);
}



Mais Desafios de Programação e 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



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