Programme facile qui ne fonctionne pas

Résolu/Fermé
rdp80 Messages postés 3 Date d'inscription samedi 4 octobre 2014 Statut Membre Dernière intervention 4 octobre 2014 - Modifié par KX le 4/10/2014 à 16:52
rdp80 Messages postés 3 Date d'inscription samedi 4 octobre 2014 Statut Membre Dernière intervention 4 octobre 2014 - 4 oct. 2014 à 17:34
Bonjour Mesdames, bonjour Messieurs,

je suis actuellement en étude de programmation dans une école et j'ai quelques problèmes concernant mon code java.

Je dois créer un programme qui lit le les sommes que nous rentrons au clavier de l'ordinateur et qui doit me sortir la somme moyenne reçue , la somme minimale reçue et la somme maximale reçue.

J'ai tapé quelques lignes mais je ne comprends pas ou est mon erreur, pourriez-vous m'aider?

package openClassRooms;

import java.util.*;
public class Exercice07 
{

 public static void main(String[] args) 
 {

  Scanner keyb=new Scanner(System.in);

  int nombreDeSommesRecues=0;
  double sommesMoyennesRecues=0;
  double sommesMinimalesRecues=0;
  double sommesMaximalesRecues=0;




  System.out.println("Bonjour veuiller indiquer le nombre de sommes recues: ");
  nombreDeSommesRecues=keyb.nextInt();

  double [] tab = new double[nombreDeSommesRecues-1];

  for (int i=0;i<nombreDeSommesRecues;++i)
  {

   System.out.println("Veuillez rentrer la reçue la "+(i+1)+" fois");
   tab[i]= keyb.nextDouble();

  }

  for (int j=0;j<nombreDeSommesRecues;++j)
  {

   sommesMoyennesRecues=sommesMoyennesRecues+tab[j];

  }
  System.out.println("La somme moyenne reçue est de : "+sommesMoyennesRecues);
  
  sommesMinimalesRecues=tab[0];

  for (int k=0;k<nombreDeSommesRecues;++k)
  {

   if (sommesMinimalesRecues>tab[k])
   {
    sommesMinimalesRecues=tab[k];
   }
   

  }
  System.out.println("La plus petite somme reçue est de : "+sommesMinimalesRecues);
  
  
  sommesMaximalesRecues=tab[0];
  
  for (int l=0;l<nombreDeSommesRecues;++l)
  {
   if (sommesMaximalesRecues<tab[l])
   {
    sommesMaximalesRecues=tab[l];
   }
  }
  
  System.out.println("La somme maximale reçue est de : "+sommesMaximalesRecues);
  System.out.println("Fin du programme");
 }
 
}




Merci beaucoup

2 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
4 oct. 2014 à 16:55
Bonjour,

Tu as mal initialisé ton tableau :
double [] tab = new double[nombreDeSommesRecues-1];

Pourquoi avoir mis
-1
?
0
rdp80 Messages postés 3 Date d'inscription samedi 4 octobre 2014 Statut Membre Dernière intervention 4 octobre 2014
4 oct. 2014 à 17:07
Bonjour KX,

j'ai mis un "-1" car il me semble que dans un tableau le nombre de case commence à 0.

En effet, prenons l'exemple que je reçoive 4 sommes, si je laisse:

double [] tab = new double[4];

il va me créer 5 cases: la case numéro 0, la case numéro 1,...,la case numéro 4 ce qui me ferait 5 cases dans mon tableau ce qui serait inutile puisque j'en ai besoin que de 4.

C'est pour cela que j'ai mis le -1 pour que le nombre de cases correspondent aux nombres de sommes que je vais recevoir.

Est-ce que j'ai été clair dans ce que j'ai dit?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 oct. 2014 à 17:10
Oui ça commence à 0, mais le nombre que tu mets dans new double[4] indique le nombre de case à créer. Cela en crée 4 (tab[0], tab[1], tab[2], tab[3]).
Donc pas de -1.
0
rdp80 Messages postés 3 Date d'inscription samedi 4 octobre 2014 Statut Membre Dernière intervention 4 octobre 2014
4 oct. 2014 à 17:34
Merci énormément pour votre aide, ca fonctionne maintenant :-)
0