Problème avec un programme

Fermé
amine - 7 nov. 2014 à 20:03
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 7 nov. 2014 à 23:22
Bonjour,
Je suis débutant en programmation et j'ai beaucoup de misère avec un programme.
Ce que j'essaie de faire c'est de remplir un tableau de temps. Le temps initial vaut 0 et on a un saut de temps "x" et un temps final "y". L'utilisateur donne le saut de temps ainsi que le temps final et le programme fais un tableau avec les données. Par exemple : Avec un temps final "10" et un saut de temps "2" ça donnerait ceci : 0 2 4 6 8 10. Mais ça ne marche pas. Voila mon code:

import java.util.Scanner;


public class Int {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);

double sautDeTemps;
double tempsFinal;
System.out.println("Entrez le Saut de temps.");
sautDeTemps = sc.nextDouble();
System.out.println("Entrez le temps final.");
tempsFinal = sc.nextDouble();

int taille = ((int)(tempsFinal/sautDeTemps))+1;
double tblTemps [] = new double[taille-1];
int i = 0;
while (i < taille){
if (i == 0){
tblTemps[0] = 0.0;
}
else {
tblTemps[i] = sautDeTemps + tblTemps[i-1];
}
i++;
}
System.out.println(tblTemps[2]);
}
}


J'ai cette erreur à la fin :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Int.main(Int.java:25)

J'affiche à la fin la troisième position du tableau pour vérification.
Merci pour votre aide!!

1 réponse

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
7 nov. 2014 à 23:22
Bonjour,

Le problème c'est que tu as fait
new double[taille-1]
tu ne peux donc pas faire
while (i < taille)
tu dois t'arrêter à
taille-1
ou initialiser le tableau à
taille
.

Remarque, si ta boucle while est de la forme :

int i = 0;
while (i < taille) {
    ...
    i++;
}

Alors il vaut mieux faire une boucle for :

for (int i = 0; i < taille; i++) {
    ...
}
0