Tableaux statiques

Résolu/Fermé
LeBolide Messages postés 18 Date d'inscription vendredi 26 septembre 2014 Statut Membre Dernière intervention 20 décembre 2018 - Modifié par KX le 12/11/2015 à 19:42
LeBolide Messages postés 18 Date d'inscription vendredi 26 septembre 2014 Statut Membre Dernière intervention 20 décembre 2018 - 12 nov. 2015 à 22:18
Bonjour, j'ai besoin de conseils pour une méthode, aidez moi juste a comprendre, ne m'écrivez pas la méthode déjà faites, merci d'avance. je dois permuter 2 objet contenu dans un tableau statique, je reçois les indices de ces objets en paramètre.
voici ce que jai essayé
 public boolean echangerEtudiantsBureau(int indice1, int indice2) {
  boolean retval = false;
  int temp = 0;

  if (indice1>= 0 || indice1 <= tblEtudiant.length && indice2 >= 0 || indice2 <= tblEtudiant.length && indice1 !=indice2) {
   for(int i=0; i<tblEtudiant.length; i++){
    temp = tblEtudiant[indice1];
    tblEtudiant[indice1] = tblEtudiant[indice2];
    tblEtudiant[indice2] = temp;
    retval = true;
   }
  }
  return retval;
 }
A voir également:

2 réponses

LeBolide Messages postés 18 Date d'inscription vendredi 26 septembre 2014 Statut Membre Dernière intervention 20 décembre 2018
Modifié par KX le 12/11/2015 à 19:42
finalement la boucle for ne me sert a rien, donc je l'enleve.

public boolean echangerEtudiantsBureau(int indice1, int indice2) { 
boolean retval = false; 
int temp = 0; 

if (indice1>= 0 || indice1 <= tblEtudiant.length && indice2 >= 0 || indice2 <= tblEtudiant.length && indice1 !=indice2) { 

temp = tblEtudiant[indice1]; 
tblEtudiant[indice1] = tblEtudiant[indice2]; 
tblEtudiant[indice2] = temp; 
retval = true; 

} 
return retval; 
}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
12 nov. 2015 à 19:53
Bonjour,

Je trouve la condition de ton if particulièrement longue, tout ça alors même que tu ne fais pas de else...

En fait il faut distinguer le if qui gère des cas particuliers (ce qui est ton cas) et doit donc renvoyer un résultat par défaut rapidement, du if qui gère vraiment un branchage dans un code (mais c'est plus rare).

Voici donc plus simple et plus lisible :

public boolean echangerEtudiantsBureau(int indice1, int indice2) {
    if (indice1 < 0)
        return false;
    if (indice1 >= tblEtudiant.length)
        return false;
    ...
}

Remarque : personnellement je pense qu'il vaudrait mieux faire du traitement d'exception plutôt qu'avoir un booléen en retour.

public void echangerEtudiantsBureau(int indice1, int indice2) {
    if (indice1 < 0)
        throw new IllegalArgumentException("indice1 is invalid: "+indice1);
    ...
}
0
LeBolide Messages postés 18 Date d'inscription vendredi 26 septembre 2014 Statut Membre Dernière intervention 20 décembre 2018
12 nov. 2015 à 22:18
Bonjour, j'aurais pu utiliser les exceptions mais pour ce cas si, la consigne était de n'en utiliser aucune. merci de votre aide
0