Calcular fluxo de caixa

Pessoal,

Consegui pegar os valores, mas estão em String:

  String despesas = (String)request.getAttribute("totalDespesa");
  String receitas = (String)request.getAttribute("totalReceita"); 

Como faço para calcular essa diferença?

Obrigado.

Sabendo-se que NUNCA virá um NULL na string, assim é uma das maneiras, a grosso modo, sem pensar muito:

double Resultado = new Double(receitas).doubleValue() - new Double(despesas).doubleValue();

Não funcionou (quando tento calcular, carrega uma tela em branco)!

Este é o código completo:


<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<%@ page import="br.com.cbcon.bean.*" %>
<%@ page import="br.com.cbcon.application.Util" %>
<%@ page import="java.util.LinkedList" %>
<%
  String despesas = (String)request.getAttribute("totalDespesa")==null?"0":(String)request.getAttribute("totalDespesa");
  String receitas = (String)request.getAttribute("totalReceita")==null?"0":(String)request.getAttribute("totalReceita");  
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
    	<title>Despesas</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	<link href="../style.css" rel="stylesheet" type="text/css">
    	<script src="../interface/prototype.js"></script>       
    </head>
    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    	<form name="form1" method="post" action="Controller?cmd=abrirfluxocaixa">
        	<jsp:include flush="false" page="../interface/Abas.jsp?aba=2" />
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
		  		<tr>
		    		<td>
		      			<input name="dataInicio" type="text" id="dataInicio" size="10" maxlength="10">
		      			<input name="dataFim" type="text" id="dataFim" size="10" maxlength="10">
					</td>
					<td>
			  			<input type="submit" name="Submit" value="Calcular">
					</td>			
		  		</tr>
			</table>
			<% double resultado = new Double(receitas).doubleValue() - new Double(despesas).doubleValue(); %>
			<%=resultado %>
	  	</form>
    </body>
</html>

Obrigado.

Como é?

Página em branco?

Traduz aí…

Esse seu jsp compilou??

Veja se não faltou referenciar o pacote completo do Double

java.lang.Double

Olá,

Esse double não está funcionando, inicio o código assim:


<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<%@ page import="br.com.cbcon.bean.*" %>
<%@ page import="br.com.cbcon.application.Util" %>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.lang.Double" %>
<%
  String despesas = (String)request.getAttribute("totalDespesa")==null?"0,00":(String)request.getAttribute("totalDespesa");
  String receitas = (String)request.getAttribute("totalReceita")==null?"0,00":(String)request.getAttribute("totalReceita"); 
  double totalReceita = new Double(receitas).doubleValue();
  double totalDespesa = new Double(despesas).doubleValue();   
%>

Quando tento carregar esse jsp ele abre em branco, como faço para ver o erro, pq no console do tomcat no eclipse não dá nenhum erro. Quando tiro as duas linhas do double e carrego a página ele volta a funcionar.

Vinicius.

A sim, esqueci de um detalhe. O valor vindo nas variáveis despesas e receitas deve estar vindo com vírgula ao invés de ponto daí o new Double realmente não funciona.

Você deverá primeiro converter esse número para o padrão brasileiro.

Assim é uma maneira:

Locale loc = new Locale("pt", "BR");
NumberFormat formato = NumberFormat.getNumberInstance(loc);

Number b = null;
try {
b = formato.parse("2,3");
}
catch (Exception ex) {
System.out.println(ex);
}

Resultado:
2.3

Então, de posse desse número convertido você pode fazer o cálculo.

Veja que eu usei a classe PAI Number, depois disso você pode user um dos seus métodos pra gerar um primitivo double, int, long e etc…

Ex.: b.doubleValue(), b.intValue()

Está quase lá:

  String despesas = (String)request.getAttribute("totalDespesa")==null?"0":(String)request.getAttribute("totalDespesa");
  String receitas = (String)request.getAttribute("totalReceita")==null?"0":(String)request.getAttribute("totalReceita"); 
  
  Locale loc = new Locale("pt", "BR");
  NumberFormat formato = NumberFormat.getNumberInstance(loc);
  
  Number despesas1 = null;
  Number receitas1 = null;
  despesas1 = formato.parse(despesas);
  receitas1 = formato.parse(receitas);

Agora preciso fazer receitas1 - despesas1:

  Double totalReceita1 = receitas1.doubleValue();
  Double totalDespesa1 = receitas1.doubleValue();
  Double total = receitas1 - despesas1;

Pois irei usar essas variáveis para imprimir no browser:

  if (despesas.equalsIgnoreCase("0") && receitas.equalsIgnoreCase("0")) {
    out.print("0,00");
  } else {
    out.print(total);
}

Mas total está imprimindo 0.0 e era para imprimir um valor, pois despesas e receitas possuem valores.

Vinicius.

Então tá, taí de bandeja:

public static void main(String[] args) {

String despesasStr = "2,3";
String receitasStr = "4,5"; 
	   
Locale loc = new Locale("pt", "BR");
NumberFormat formato = NumberFormat.getNumberInstance(loc);
	   
Number despesas = null;
Number receitas = null;
double resultado = 0;
			
try {
   despesas = formato.parse(despesasStr);
   receitas = formato.parse(receitasStr);
   resultado = receitas.doubleValue() - despesas.doubleValue();
}
catch (Exception ex) {
   System.out.println(ex);
}

System.out.println(resultado);
}

Resultado no console da IDE:
2.2