flyzi
Messages postés79Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention21 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];
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;
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();