Téléchargement
illégal
Posez votre question Signaler

Premier programme en java: erreurs...

flyzi 83Messages postés 19 juin 2007Date d'inscription 21 décembre 2010Dernière intervention - Dernière réponse le 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.
Lire la suite 

Premier programme en java: erreurs »

2 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
PS

Voir http://viennet.developpez.com/cours/java/thread/#LII-F

Dan
Ajouter un commentaire
Ce document intitulé « premier programme en java: erreurs... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?