Hola este es mi problema
El programa principal, escrito en una clase aparte, debe hacer:
• Leer de teclado el nombre del país (un String), el PIB de los años 2013
a 2009 (5 enteros) y la variación interanual de 2009 (un número real)
Crear 5 objetos de la clase DatosPIB, uno para cada año de 2009 a
2013
- para los años que no sean 2009 la variación del PIB se calcula como (PIB
del año actual - PIB del año anterior) * 100 / (PIB del año anterior)
• Mostrar en una ventana de la clase Escritura los cinco valores de
la variación del PIB obtenidos de los 5 objetos;
Este es mi codigo
Código Java:
Ver originalimport fundamentos.*;
/**
* Write a description of class Subnormal here.
*
* @author Sergio
* @version (a version number or a date)
*/
public class EvolucionPIB
{
public static void main
(String[] args
) {
Lectura lec= new Lectura ("DatosPIB");
int Pib2013;
int Pib2012;
int Pib2011;
int Pib2010;
int Pib2009;
double variacionInteranual;
lec.creaEntrada("Introduce el nombre del pais","España");
lec.creaEntrada("PIB 2009",1046894);
lec.creaEntrada("PIB 2010",1045620);
lec.creaEntrada("PIB 2011",1046327);
lec.creaEntrada("PIB 2012",1029002);
lec.creaEntrada("PIB 2013",1022988);
lec.creaEntrada("Variacion Interanual 2009", -3.8);
lec.esperaYCierra("Completa los datos");
Nombre=lec.leeString ("Introduce el nombre del pais");
Pib2009=lec.leeInt("PIB 2009");
Pib2010=lec.leeInt("PIB 2010");
Pib2011=lec.leeInt("PIB 2011");
Pib2012=lec.leeInt("PIB 2012");
Pib2013=lec.leeInt("PIB 2013");
variacionInteranual=lec.leeDouble("Variacion Interanual 2009");
DatosPIB DatosPib2009=new DatosPIB(Nombre,Pib2009,variacionInteranual,2009);
DatosPIB DatosPib2010=new DatosPIB(Nombre,Pib2010,(((Pib2010-Pib2009)*100)/Pib2009),2010);
DatosPIB DatosPib2011=new DatosPIB(Nombre,Pib2011,(((Pib2011-Pib2010)*100)/Pib2010),2011);
DatosPIB DatosPib2012=new DatosPIB(Nombre,Pib2012,(((Pib2012-Pib2011)*100)/Pib2011),2012);
DatosPIB DatosPib2013=new DatosPIB(Nombre,Pib2013,(((Pib2013-Pib2012)*100)/Pib2012),2013);
Escritura esc = new Escritura ("Calculo de las variaciones");
esc.insertaValor("Variacion Interanual 2009",variacionInteranual);
esc.insertaValor("Variacion Interanual 2010",DatosPib2009.variacion());
esc.insertaValor("Variacion Interanual 2011",DatosPib2010.variacion());
esc.insertaValor("Variacion Interanual 2012",DatosPib2011.variacion());
esc.insertaValor("Variacion Interanual 2013",variacion2013());
esc.espera();
}
=
este es el codigo de la clase DatosPIB que me dan hecha ya:
Código Java:
Ver original/**
* Clase para guardar informacion del PIB anual de un pais
*/
public class DatosPIB {
private int pib; // Millones de euros
private double variacion; // En %
private int fecha; // Anyo
/**
* Constructor que recibe el nombre del pais, el PIB (en millones de
* euros), su variaciacion interanual (en %) y el anyo al que
* corresponden los datos
*
* @param pais Nombre del pais
* @param pib Producto Interior Bruto, en millones de euros
* @param variacion Variacion interanual del PIB, en %
* @param fecha Anyo al que corresponden los datos
*/
public DatosPIB
(String pais,
int pib,
double variacion,
int fecha
) { this.pais=pais;
this.pib = pib;
this.variacion = variacion;
this.fecha = fecha;
}
/**
* Metodo observador del nombre del pais
*/
return pais;
}
/**
* Metodo observador del valor del PIB
*
* @return Producto Interior Bruto, en millones de euros
*/
public int pib() {
return pib;
}
/**
* Metodo observador de la tasa de variacion interanual del PIB
*
* @return variacion interanual del PIB, en %
*/
public double variacion() {
return variacion;
}
/**
* Metodo que retorna el anyo al que corresponden los datos
* que guarda el objeto sobre el que se aplica
*
* @return anyo al que corresponden los datos
*/
public double fecha() {
return fecha;
}
}
El problema es que mi codigo realiza mal las operaciones, muestra una pantalla para introducir los datos (he puesto el codigo con los datos ya puestos como podeis ver), despues te muestra otra pantalla en la que los resultados estan casi bien, el primer digito 0. o 1. está bien el problema esta en el segundo numero, mi codigo devuelve siempre 0.0 o 1.0 y debería devolver valores como (-0.6 en 2013, o 0.1 en 2011)
gracias