Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de Java - Um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguidaQuantidade de visualizações: 805 vezes |
Pergunta/Tarefa: Escreva um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguida o método deverá dividir o resultado, ou seja, o produto, por 2, e, finalmente, retornar o resto de uma divisão inteira desse resultado pelo número 7. Sua saída deverá ser parecida com: Informe o primeiro valor inteiro: 18 Informe o segundo valor inteiro: 19 O resultado é: 3 Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ // vamos usar a classe Scanner para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar dois números inteiros System.out.print("Informe o primeiro valor inteiro: "); int a = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor inteiro: "); int b = Integer.parseInt(entrada.nextLine()); // vamos obter o resultado de uma chamada à função calcular() int resultado = calcular(a, b); System.out.println("O resultado é: " + resultado); } public static int calcular(int a, int b){ // primeiro multiplicamos as duas variáveis int produto = a * b; // agora dividimos o produto por 2 int temp = produto / 2; // agora obtemos o módulo do resultado por 7 int resultado = temp % 7; // e retornamos o valor calculado return resultado; } } |
Java Servlets ::: Dicas & Truques ::: URLs, Documentos e Páginas |
Como compartilhar dados entre um Java Servlet e uma página JSP usando a requisição HttpServletRequestQuantidade de visualizações: 8399 vezes |
Quando usamos o método forward() da interface RequestDispatcher para direcionar para um outro Java Servlet ou página JSP, tanto o objeto de requisição ServletRequest quanto o objeto de resposta ServletResponse são enviados também. Assim, podemos tirar proveito desta funcionalidade para compartilhar dados entre um servlet e uma página JSP usando a requisição. Vamos ver como isso é possível. Comece analisando o seguinte servlet: package estudos; import java.io.*; import jakarta.servlet.*; import jakarta.servlet.http.*; public class MeuServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ // cria uma instância da classe Pessoa Pessoa p = new Pessoa(); p.setNome("Osmar J. Silva"); // vamos colocar o objeto p na requisição request.setAttribute("pessoaBean", p); // agora direcionamos para a página exibir.jsp RequestDispatcher dispatcher = request.getRequestDispatcher("/exibir.jsp"); dispatcher.forward(request, response); } } Note que aqui eu já estou usando o pacote jakarta.servlet em vez de javax.servlet. Confirme se você está usando o Java EE ou Jakarta EE. Veja que no método doGet() deste Servlet nós temos a criação de uma instância da classe Pessoa (Pessoa.java). Esta classe tem a seguinte estrutura: package estudos; public class Pessoa{ private String nome; public String getNome(){ return this.nome; } public void setNome(String nome){ this.nome = nome; } } Depois de criada a instância da classe nós a colocamos na requisição atual usando: // vamos colocar o objeto p na requisição request.setAttribute("pessoaBean", p); O passo seguinte é direcionar a requisição atual para a página exibir.jsp (a View do MVC). Veja o código para esta página: <jsp:useBean id="pessoaBean" scope="request" type="estudos.Pessoa" /> <html> <head> <title>Estudos Servlet</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> </head> <body> <h4>Nome da pessoa: <jsp:getProperty name="pessoaBean" property="nome" /></h4> </body> </html> Aqui nós estamos usando <jsp:getProperty> para acessar um dos atributos do bean pessoaBean. Poderíamos usar JSTL e EL. Veja: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <jsp:useBean id="pessoaBean" scope="request" type="estudos.Pessoa" /> <html> <head> <title>Estudos Servlet</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> </head> <body> <h4>Nome da pessoa: <c:out value="${pessoaBean.nome}"/></h4> </body> </html> Fiz o mapeamento deste Java Servlet para a URL http://localhost:8080/estudos/meuservlet. Ao chamá-la nós teremos o seguinte resultado: Nome da pessoa: Osmar J. Silva |
Java ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o comprimento da hipotenusa em Java dadas as medidas do cateto oposto e do cateto adjascenteQuantidade de visualizações: 1554 vezes |
Nesta dica mostrarei como é possível usar a linguagem Java para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando 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. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras), tudo que temos a fazer a converter esta fórmula para código Java. Veja: package arquivodecodigos; public class Estudos{ public static void main(String args[]){ double a = 20; // medida do cateto oposto double b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da hipotenusa double c = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); // e mostramos o resultado System.out.println("O comprimento da hipotenusa é: " + c); } } Ao executar este código Java nós teremos o seguinte resultado: O comprimento da hipotenusa é: 36.05551275463989 Como podemos ver, o resultado retornado com o código Java confere com os valores da imagem apresentada. |
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# APIQuantidade de visualizações: 373 vezes |
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação. Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos. O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit. De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar. O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação. Veja o código Revit C# API completo para o exemplo: using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI.Selection; using System.Collections.Generic; using Autodesk.Revit.DB.Architecture; using System.Linq; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // vamos obter uma referência ao Document ativo Document doc = this.ActiveUIDocument.Document; UIDocument uidoc = this.ActiveUIDocument; // agora mostramos uma mensagem para o usuário selecionar uma // coluna ou pilar TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar"); // obtemos uma referência ao objeto Selection do // UIDocument ativo Selection selecao = uidoc.Selection; // e finalmente esperamos que o usuário selecione o elemento Reference selecionado = selecao.PickObject(ObjectType.Element, "Selecione uma coluna ou pilar"); // agora testamos se o usuário realmente selecionou um // elemento if (selecionado != null) { // vamos obter o elemento selecionado a partir da // referência FamilyInstance coluna = uidoc.Document.GetElement(selecionado) as FamilyInstance; // vamos obter o elemento BoundingBoxXYZ BoundingBoxXYZ bounding = coluna.get_BoundingBox(null); // vamos obter as informações da BoundingBoxXYZ // primeiro o ponto mínimo (canto esquerdo inferior e // a parte de trás da caixa delimitadora) XYZ pontoMinimo = bounding.Min; // agora o ponto máximo (canto direito superior e // a parte da frente da caixa delimitadora) XYZ pontoMaximo = bounding.Max; // agora obtemos o ponto central da coluna XYZ centro = (pontoMaximo + pontoMinimo) * 0.5; // construímos a linha que servirá de eixo de rotação Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ); // definimos o ângulo de rotação em graus double angulo_rotacao_graus = 45; // convertemos para radianos double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180); // iniciamos a transação Transaction transacao = new Transaction(doc); transacao.Start("Como rotacionar colunas e pilares no Revit"); // rotacionamos a coluna ou pilar ElementTransformUtils.RotateElement(doc, coluna.Id, eixos, angulo_rotacao_radianos); // fazemos o commit da transação transacao.Commit(); // e mostramos o resultado TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso."); } } private void Module_Shutdown(object sender, EventArgs e) { // para fazer alguma limpeza de memória ou algo assim } #region Revit Macros generated code private void InternalStartup() { this.Startup += new System.EventHandler(Module_Startup); this.Shutdown += new System.EventHandler(Module_Shutdown); } #endregion } } |
Java ::: Dicas & Truques ::: Mouse e Teclado |
Apostila de Java Swing - Como detectar um duplo-clique do mouse em uma JFrame ou outros controles visuaisQuantidade de visualizações: 11364 vezes |
Nesta dica mostrarei como podemos usar o método getClickCount() da classe MouseEvent para detectar o duplo-clique do mouse em uma janela JFrame do Java Swing. É claro que o código pode ser aplicado em qualquer outro componente que herde de JComponent. Veja o código completo para o exemplo: package arquivodecodigos; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Estudos extends JFrame{ public Estudos() { super("Eventos do Mouse e Teclado"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); this.addMouseListener( new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e){ if(e.getClickCount() == 2){ setTitle("Duplo-clique detectado."); } else{ setTitle("Clique simples detectado."); } } } ); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
C# ::: Datas e Horas ::: DateTime |
Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTimeQuantidade de visualizações: 10619 vezes |
Em algumas situações nossos códigos precisam adicionar ou subtrair meses de uma data. Isso pode ser feito com o auxílio do método AddMonths() da estrutura DateTime. Este método recebe o número de meses a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 3 meses à data atual: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos adicionar 3 meses à data de hoje DateTime data_futura = hoje.AddMonths(3); // exibe a data daqui a três meses System.Console.WriteLine("Daqui a 3 meses será {0:d}", data_futura); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } É possível também subtrair meses. Para isso só precisamos fornecer um valor negativo para o método AddMonths(). Veja: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos subtrair 5 meses da data de hoje DateTime data_passado = hoje.AddMonths(-5); // exibe a data 5 meses atrás System.Console.WriteLine("Há 5 meses era {0:d}", data_passado); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } Lembre-se, contudo, que o método AddMonths() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. Esta exceção também será disparada se o valor fornecido para o mês for menor que -120.000 ou maior que 120.000. |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como acessar os caracteres de uma string individualmente em PHP usando índicesQuantidade de visualizações: 199 vezes |
Em algumas situações nós gostaríamos de acessar os caracteres individuais de uma palavra, frase ou texto em PHP. Isso pode ser feito por meio da notação de índices, ou seja, usando []. Veja um exemplo abaixo: <?php $nome = "Carlos de Jesus"; echo "O primeiro caractere é " . $nome[0]; ?> Ao executar este código PHP nós teremos o seguinte resultado: O primeiro caractere é C |
C# ::: Windows Forms ::: TextBox |
Como retornar o tamanho do texto de um TextBox em C# Windows Forms usando a propriedade TextLengthQuantidade de visualizações: 9451 vezes |
A propriedade TextLength da classe TextBox do C# Windows Forms nos permite obter a quantidade de caracteres digitadas na caixa de texto, o seja, o tamanho da string presente no controle. Veja um exemplo C# Windows Forms no qual temos um botão button1 e uma caixa de texto textbox1. Ao digitar algum conteúdo e clicar no botão, uma mensagem MessageBox exibirá a quantidade de caracteres digitados: private void button1_Click(object sender, EventArgs e) { // vamos obter o tamanho do texto do TextBox int tamanho = textBox1.TextLength; MessageBox.Show("A caixa de texto contém " + tamanho + " caracteres."); } Ao executar este código C# Windows Forms nós teremos um resultado parecido com: A caixa de texto contém 10 caracteres. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Valor da diária, valor médio arrecadado com e sem promoção e o lucro ou prejuízo mensal de uma promoção em um hotelQuantidade de visualizações: 14647 vezes |
Pergunta/Tarefa: Escreva um programa Java para resolver o seguinte problema: Um hotel com 42 apartamentos resolveu fazer promoções para os fins de semana fora da alta temporada, isto é, nos meses de abril, maio, junho, agosto, setembro, outubro e novembro. A taxa da promoção é de 22% da diária normal. A ocupação média do hotel sem promoção é de 40%. A expectativa é aumentar a taxa de ocupação para 70%. Supondo que as expectativas se confirmem, escrever um algoritmo que lê a diária normal, que calcule e escreva as seguintes informações: (a) O valor da diária no período da promoção. (b) O valor médio arrecadado sem a promoção, durante um mês. (c) O valor médio arrecadado com a promoção, durante um mês. (d) O lucro ou prejuízo mensal com a promoção. Seu código Java deverá apresentar uma saída parecida com: Informe o valor da diária normal: 120 Diária no período de promoção: 26,40 Média arrecadada sem a promoção durante um mês: 8064,00 Média arrecadada com a promoção durante um mês: 3104,64 Prejuízo mensal com a promoção: 4959,36 Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner): package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos criar um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // valor da diária em período normal double valor_diaria_normal; // valor da diária no período de promoção double valor_diaria_promocao; // vamos obter o valor da diária no período normal System.out.print("Informe o valor da diária normal: "); valor_diaria_normal = Double.parseDouble(entrada.nextLine()); // vamos obter o valor da diária no período promocional valor_diaria_promocao = valor_diaria_normal * (22.0 / 100.0); // vamos calcular o valor médio arrecadado sem a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_sem_promocao = (valor_diaria_normal * (42 * (40.0 / 100.0)) * 4); // vamos calcular o valor médio arrecadado com a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_com_promocao = (valor_diaria_promocao * (42 * (70.0 / 100.0)) * 4); System.out.printf("Diária no período de promoção: %.2f\n", valor_diaria_promocao); System.out.printf("Média arrecadada sem a promoção durante um mês: %.2f\n", media_arrecado_sem_promocao); System.out.printf("Média arrecadada com a promoção durante um mês: %.2f\n", media_arrecado_com_promocao); // houve lucro ou prejuízo? if (media_arrecado_sem_promocao < media_arrecado_com_promocao) { System.out.printf("Lucro mensal com a promoção: %.2f\n", media_arrecado_com_promocao - media_arrecado_sem_promocao); } else { System.out.printf("Prejuízo mensal com a promoção: %.2f\n", media_arrecado_sem_promocao - media_arrecado_com_promocao); } } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de Java - Como contar de 0 até 10 usando recursividade em Java - Funções recursivas em JavaQuantidade de visualizações: 5166 vezes |
Pergunta/Tarefa: Escreva um método Java recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: public static void contarRecursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando Java: package exercicio; public class Exercicio { public static void main(String[] args) { // efetua uma chamada ao método recursivo // fornecendo o primeiro valor contarRecursivamente(0); } // método recursivo que conta de 0 até 10; public static void contarRecursivamente(int n){ // vamos exibir o número atual System.out.print(n + " "); // devemos prosseguir com a recursividade? if(n < 10){ // incrementa o valor de n n++; // e faz uma nova chamada recursiva contarRecursivamente(n); } } } |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como calcular MDC em Delphi Java - Como carregar uma imagem em um BufferedImage do Java usando o método read() da classe ImageIO Java - Como usar o método next() da interface Iterator do Java para obter o próximo elemento da iteração |
Você também poderá gostar das dicas e truques de programação abaixo |
AutoCAD Civil 3D .NET C# - Como retornar a quantidade de perfis de um alinhamento do Civil 3D usando a função GetProfileIds() da API C# do AutoCAD Civil 3D |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |