Problème JAVA. Polynômes second degré.

Résolu/Fermé
L3arning Messages postés 5 Date d'inscription vendredi 28 octobre 2022 Statut Membre Dernière intervention 1 novembre 2022 - 28 oct. 2022 à 15:54
L3arning Messages postés 5 Date d'inscription vendredi 28 octobre 2022 Statut Membre Dernière intervention 1 novembre 2022 - 29 oct. 2022 à 23:11

Bonjour,

je souhaite demander à l'utilisateur d'entrée le nombre de polynômes second degré qu'il souhaite écrire puis quelle valeur il souhaite affecter à x. La boucle while me permet de faire le total de tous ces polynômes par rapport à x puis d'en faire la moyenne. Le problème c'est que le code marchait très bien sans la boucle while mais depuis que je l'ai rajouté j'ai tout le temps cette erreur : 

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at Main.main(Main.java:67)"

Le code :

        else if (answer.equals("w")){
            System.out.println("How much Polynomials you want to write ?");
            int p = scan.nextInt();
            int i = 0;
            int total = 0;
            while(i < p){
                i += 1;
                System.out.println("Write : a b c");
                String abc = scan.nextLine();
                String[] list = abc.split(" ");
                System.out.println("a = " + list[0] + "\nb = " + list[1] + "\nc = " + list[2] );
                int a = Integer.parseInt(list[0]);
                int b = Integer.parseInt(list[1]);
                int c = Integer.parseInt(list[2]);
                System.out.println("Write the value of x :");
                int x = scan.nextInt();
                // Why I have to use double ?
                double x2 = Math.pow(x,2);
                double calcul = (a * x2) + (b * x) + (c);
                System.out.println(calcul);
                total += calcul;
            }
            System.out.println("Total =" + total / p);

La ligne 67 est :  System.out.println("a = " + list[0] + "\nb = " + list[1] + "\nc = " + list[2] );

Merci à celui qui prendra le temps de me répondre.

A voir également:

4 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
28 oct. 2022 à 18:24

Bonjour,

Après chaque scan.nextInt() tu dois rajouter un nextLine() vide, car en plus de ton int qui est lu, il faut aussi lire le saut de ligne que tu ajoutes pour valider ta saisie.

Une alternative est de remplacer scan.nextInt() par Integer.parseInt(scan.nextLine()); qui va lire toute la ligne (entier + saut de ligne)


1
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 oct. 2022 à 10:09

Tu avais deux nextInt, un avant la boucle que tu as corrigé et un dans la boucle, pour la valeur x, il faut aussi le remplacer.


1
L3arning Messages postés 5 Date d'inscription vendredi 28 octobre 2022 Statut Membre Dernière intervention 1 novembre 2022
28 oct. 2022 à 19:59

J'ai donc remplacé le scan.nextInt(); par Integer.parseInt(scan.nextLine());  comme tu me l'as conseillé et maintenant la boucle se lance une fois et fonctionne puis dès qu'elle se relance je retombe sur le même problème.

Merci de ta réponse.

0
L3arning Messages postés 5 Date d'inscription vendredi 28 octobre 2022 Statut Membre Dernière intervention 1 novembre 2022
29 oct. 2022 à 23:11

Merci de ton aide.

0