Java - Ayuda error al ejecutar el programa

 
Vista:
sin imagen de perfil

Ayuda error al ejecutar el programa

Publicado por julio francisco (2 intervenciones) el 01/10/2014 17:15:46
Conocido el año inicial 2011, con 7.0 milliard d'humains y para una tasa de crecimiento del 1.2% anual, pide introducir una cifra de población en la forma por ej. 8.6, y presentar el listado de los años y la población correspondiente hasta que se llega a esa cifra introducida.

HELP ME PLEASE

el error que obtengo y que no sé cómo resolver
====---- PARTIE 1 ----====
Population en 2011 : 7,000

====---- PARTIE 2 ----====
Combien de milliards (> 7.0) ? 8.6
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Population.main(Population.java:68)

Lo he intentado con while también y no hay manera. seguro que es una tontería pero no lo pillo.

import java.text.DecimalFormat;
import java.util.Scanner;

public class Population {
public static void main(String[] args) {

DecimalFormat df = new DecimalFormat("#0.000");
Scanner keyb = new Scanner(System.in);

int anneeInitiale = 2011; // annee initiale
double tauxCroissance = 1.2; // taux de croissance, en %
double populationInitiale = 7.0; // population initiale, en milliard d'humains

double populationCourante = populationInitiale; // population mondiale pour l'annee courante
int anneeCourante = anneeInitiale; // annee de calcul

System.out.print("Combien de milliards (> 7.0) ? ");
double populationFinale = keyb.nextDouble();
while (populationInitiale > populationFinale){
populationInitiale = populationInitiale * (1.2 / 100);
anneeInitiale = (anneeInitiale + 1);
System.out.println("Population en " + anneeInitiale + " : " + df.format(populationInitiale));
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda error al ejecutar el programa

Publicado por Tom (1831 intervenciones) el 01/10/2014 19:35:08
Pues, esa exccepción está bien clara, el formato de lo que introduces por teclado no es apropiado para nextDouble().

Si al escribir 8.6 falla, prueba a escribir 8,6.

Si funciona con , y no con ., es cosa de la configuración del idioma (o sea del locale). En este caso, usa Scanner.useLocale().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda error al ejecutar el programa

Publicado por julio francisco (2 intervenciones) el 01/10/2014 21:44:17
muchas gracias, me ha servido para tener en cuenta ese dato y además he cambiado por:

double populationFinale = 0;
System.out.print("Combien de milliards (> 7.0) ? ");

//muy importante introducir con "," y no con "." es cosa de la configuración del idioma (o sea del locale). En este caso, usa Scanner.useLocale().

populationFinale = keyb.nextDouble();
do {
if (populationFinale > populationInitiale) {
populationInitiale = populationInitiale * (1 + 1.2/100 ) ;
anneeInitiale = anneeInitiale + 1;
System.out.println("Population en " + anneeInitiale + ": " + df.format(populationInitiale));
} else {
System.out.print("Combien de milliards (> 7.0) ? ");
populationFinale = keyb.nextDouble();
}
} while (populationFinale > populationInitiale) ;

No entendía los mensajes de error. ¡¡NO SABES CUÁNTO TE LO AGRADEZCO!!

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar