Problème avec un programme

amine -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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