Tableaux statiques

Résolu
LeBolide Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
LeBolide Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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