Premier programme en java: erreurs...

Fermé
flyzi Messages postés 79 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 21 décembre 2010 - 20 oct. 2008 à 17:41
 Utilisateur anonyme - 21 oct. 2008 à 08:41
Bonjour,
je commence à programmer en java et j'ai pas mal de d'erreurs. Surtout avec l'utilisation des méthodes.

Je n'arrive pas à comprendre pourquoi ma méthode afficher n'affiche pas de tableau!

Voici mon programme :

/* Rôle : Ce programme permet de remplir un tableau d'entiers
partiellement (l'utilisateur peut remplir de 1 à 14 cases)
puis de façon complète en laissant à l'utilisateur le choix
de la position des nouveaux entiers saisis (choix d'une case dans le tableau)
principe :
*/
public class semaine43
{
final int N=15; //taille du tableau d'entiers déclaré en variable globale

void principal()
{
int[] monTab=new int[N]; //tableau d'entiers de 15 cases
int nbElem=0,nbrinsere=0,position=0;
/* nbElem correspond au nombre d'entiers que va entrer en premier l'utilisateur
(avant une insertion d'entiers supplémentaires)
nbrinsere est un entier suplémentaire à insérer dans le tableau
position est le rang où nbrinsere doit être inséré */

// Appel de la méthode "remplir".
remplir(monTab,nbElem);

//-------------------------------------------------------------------------------------------------------------------
//Affichage d'un premier tableau avant insertion d'entiers supplémentaires
System.out.println();
System.out.println("------------------------------------------");
System.out.println("Tableau d'entiers avant insertion : ");
System.out.println();

// Appel de la méthode "afficher"
afficher(monTab,nbElem);
System.out.println();
//-----------------------------------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------------------------------

//Cette boucle permet de vérifier que nbElem est inférieur à N après insertion. Dès que l'on sort de cette boucle on a forcément nbElem égal à N car la méthode incrémente nbElem de +1 après chaque insertion.
//Utilisation d'une boucle (qui se termine quand nbElem=N) qui comprend :
while(nbElem<N) //tant que le tableau n'est pas plein continuer à boucler.
{
//=>un saisi d'un entier à insérer dans le tableau
nbrinsere=new SimpleInput().getInt("saisissez l'entier que vous voulez insérer dans le tableau. ");


//=>un saisi de la position de l'entier dans le tableau.
position=new SimpleInput().getInt("saisissez la position de cet entier dans le tableau. Position valide : du rang 0 (ce rang correspond à la première case du tableau) au rang "+(nbElem-1)+" (ce rang correspond pour le moment à la dernière case du tableau) ");


//=>Appel de la méthode "inserer"
inserer(monTab,position,nbrinsere,nbElem);

}

//Affichage d'un deuxième tableau après remplissage total du tableau
System.out.println();
System.out.println("-----------------------------------------");
System.out.println("Tableau d'entiers après insertion de nouveaux entiers");
System.out.println();

//=>appel de la méthode "afficher"
afficher(monTab,nbElem);
System.out.println("-----------------------------------------");

}

//**************************************************************************************
//Cette méthode permet de remplir un tableau d'entiers.
int remplir(int[] monTab,int nbElem)
{
int compteur=0,ent=0;
//compteur permet de remplir dans l'ordre les cases d'un tableau.
//ent est un entier entré dans le tableau.

do //cette boucle permet de choisir le nombre d'entiers que va rentrer l'utilisateur (remplissage partiel du tableau)
{
nbElem=new SimpleInput().getInt("saisissez le nombre d'entiers que vous allez entrer. De 1 à 14 entiers.");

}while ((nbElem<1) || (nbElem>(N-1)));

for(compteur=0;compteur<nbElem;compteur++) //Remplissage du tableau
{
ent=new SimpleInput().getInt("saisissez un entier");
monTab[compteur]=ent;
}
return(nbElem);
}
//**************************************************************************************
//Cette méthode permet d'insérer à une position donnée un entier saisi par l'utilisateur.
int inserer(int[] monTab, int position, int nbrinsere,int nbElem)
{
int tmp=0, compteur=0;
//tmp permet de sauvegarder le contenu d'une case du tableau (afin de réaliser sans écrasement un décalage vers la droite de l'entier sur nbrinsere
//et des entiers à droite de nbrinsere)

if((position>=0) && (position<nbElem))
{


//si la position d'insertion est entre 0 et (nbElem-1) alors :

//------------------------------------------------------------
//décalage vers la droite de l'entier sur nbrinsere et des entiers à droite de nbrinsere
tmp=monTab[position];

monTab[position]=nbrinsere;

for(compteur=nbElem;compteur>(position+1);compteur--)
{
monTab[compteur]=monTab[compteur-1];
}

monTab[position+1]=tmp;

//------------------------------------------------------------

nbElem=(nbElem+1); // incrémentation de nbElem.
}

else //Si position n'est pas entre 0 et (nbElem-1) alors message d'erreur
{
System.out.println();
System.out.println("Erreur : La position que vous avez demandé sort du tableau (position allant du rang 0 au rang "+(nbElem-1)+" )");
}
return(nbElem);
}
//**************************************************************************************
//Cette méthode affiche un tableau d'entiers.

void afficher(int[] monTab,int nbElem)
{
int compteur=0;

for(compteur=0;compteur<nbElem;compteur++)
{
System.out.print(" "+monTab[compteur]);
}
System.out.println();
}
//**************************************************************************************
}

Merci d'avance.
A voir également:

2 réponses

Utilisateur anonyme
21 oct. 2008 à 08:21
Bonjour,

La raison est simple : On veut afficher le tableau alors que remplir(monTab,nbElem); n'a pas encore retourné.

// Appel de la méthode "remplir".
remplir(monTab,nbElem);
<<<<<<<<<<<<<<<<<<<<<<< ICI (la solution est un peu plus compliquée (Thread))
//-------------------------------------------------------------------------------------------------------------------
//Affichage d'un premier tableau avant insertion d'entiers supplémentaires
System.out.println();
System.out.println("------------------------------------------");
System.out.println("Tableau d'entiers avant insertion : ");
System.out.println();

Cordialement.

Dan
0