(JAVA) Comment faire des cases en cascades en Java ?!

Comment faire des cases en cascades en Java ?! (JAVA) - Programmation

Marsh Posté le 17-06-2002 à 10:51:25    

Ca marche pas ca ?!:
 
 

Citation :

case "o": case "O": case "oui": case "Oui": case "OUI":{empruntable=true;}
 break;


 
 
Mais d'abord, j'ai le droit de faire un switch sur une string ?!


Message édité par brisssou le 17-06-2002 à 10:54:59
Reply

Marsh Posté le 17-06-2002 à 10:51:25   

Reply

Marsh Posté le 17-06-2002 à 10:55:10    

non


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-06-2002 à 11:07:37    

oki


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 17-06-2002 à 15:43:49    

un cado pour HFR : je suis en train de me faire des classes utilitaires. Vous savez, le genre de trucs dont on a tout le temps besoin et dont on fait des gros copier/coller pas beau pour le mettre dans chacun de nos projets.
 
bref, la dedans, tu vas trouver une fonction equalsIgnoreCase qui fait ce que tu voulais faire avec ton case avec une ecriture simplifiée par rapport à plein de if.
 
Regarde la méthode testEquals pour voir le fonctionnement :
 

Code :
  1. package utils;
  2. import java.util.*;
  3. public class StringUtils {
  4.   public static String replace(String s, String replaced, String replacing) {
  5.     StringBuffer tmp = new StringBuffer(s);
  6.     int i = 0, debut, fin;
  7.     char c = replaced.charAt(0);
  8.     while (i < tmp.length()) {
  9.  while ((i < tmp.length()) && (tmp.charAt(i) != c))
  10.    i++;
  11.  debut = i;
  12.  i++;
  13.  fin = 1;
  14.  while ((i < tmp.length()) && (fin < replaced.length()) && (tmp.charAt(i) == replaced.charAt(fin))) {
  15.    fin++;
  16.    i++;
  17.  }
  18.  if ((i <= tmp.length()) && (fin == replaced.length())) {
  19.    tmp.replace(debut, debut+fin, replacing);
  20.    i = debut + replacing.length();
  21.  }
  22.     }
  23.     return tmp.toString();
  24.   }
  25.   public static void testReplace () {
  26.     String s = "coucou, comment ca va ?";
  27.     String replaced = "co";
  28.     String replacing = "111";
  29.     System.out.println(replace(s, replaced, replacing));
  30.   }
  31.    public static final boolean BEFORE = true;
  32.    public static final boolean AFTER = false;
  33.    public static String format (String mes, int lgth, char space, boolean before) {
  34.     char[] buf = new char[lgth];
  35.     int i;
  36.     if (before) {
  37.        for (i = 0; i < lgth-mes.length(); i++)
  38.         buf[i] =  space;
  39.        for (int j=0; j<mes.length(); i++,j++)
  40.         buf[i] =  mes.charAt(j);
  41.     } else {
  42.        for (i = 0; (i < mes.length()) && (i<lgth); i++)
  43.         buf[i] =  mes.charAt(i);
  44.        for (i = 0; i < lgth; i++)
  45.         buf[i] =  space;
  46.     }
  47.     return new String(buf);
  48.    }
  49.    /*
  50.     retourne une chaine de longueur lgth contenant le mes ou le mes raccourcit s'il ne rentre pas entierement  
  51.     */
  52.    public static String format (String mes, int lgth) {
  53.     char[] buf = new char[lgth];
  54.     int i;
  55.     for (i = 0; (i < mes.length()) && (i<lgth); i++) {
  56.        buf[i] =  mes.charAt(i);
  57.     }
  58.     for (; i < lgth; i++) {
  59.        buf[i] =  ' ';
  60.     }
  61.     if (mes.length() > lgth)
  62.        for (i = (lgth-3<0)?0:lgth-3; i <lgth; i++) {
  63.         buf[i] = '.';
  64.        }
  65.     return new String(buf);
  66.    }
  67.    /**
  68.      identique au java.util.String.startsWith avec un paramètre from en plus.
  69.    */
  70.    public static final boolean startsWith(String in, String begin, int from) {
  71.     if (in.length() < from + begin.length()) {
  72.        return false;
  73.     }   
  74.     for (int i =0; i < begin.length(); i++) {
  75.        if (in.charAt(from+i) != begin.charAt(i))
  76.         return false;
  77.     }
  78.     return true;
  79.    }
  80.    /**
  81.      identique au java.util.String.startsWith avec un paramètre from en plus et qui est  
  82.      case-insensitive
  83.    */
  84.    public static final boolean startsWithIgnoreCase(String in, String begin, int from) {
  85.     if (in.length() < from + begin.length()) {
  86.        return false;
  87.     }   
  88.     char c;
  89.     for (int i =0; i < begin.length(); i++) {
  90.        c = in.charAt(from+i);
  91.        if (Character.toUpperCase(in.charAt(from+i)) != Character.toUpperCase(begin.charAt(i)))
  92.         return false;
  93.     }
  94.     return true;
  95.    }
  96.    public static final boolean startsWithIgnoreCase(String in, String begin) {
  97.     return startsWithIgnoreCase(in, begin, 0);
  98.    }
  99.    public static final boolean endsWithIgnoreCase(String in, String end) {
  100.     return startsWithIgnoreCase(in, end, in.length() - end.length());
  101.    }
  102.   /**  
  103.      teste si la chaine s est égale à une des chaines du tableau
  104.      retourne -1 si non, ou l'index de la chaine en question si oui
  105.   */
  106.   public static int equals(String s, String[] to) {
  107.     return equals(s, to, stringComp);
  108.   }
  109.   private static final Comparator stringComp = new StringComparator();
  110.   /**  
  111.      teste si la chaine s est égale à une des chaines du tableau sans
  112.      tenir compet de la case
  113.      retourne -1 si non, ou l'index de la chaine en question si oui
  114.   */
  115.   public static int equalsIgnoreCase(String s, String[] to) {
  116.     return equals(s, to, ignoreCaseStringComp);
  117.   }
  118.   private static final Comparator ignoreCaseStringComp = new IgnoreCaseStringComparator();
  119.   /**
  120.      teste si la chaine s est égale à une des chaines du tableau, en utilisant le  
  121.      comparateur du tableau. <br>  
  122.      <b> attention </b> : Pour des raison d'optimisation, cette fonction  
  123.      considère que 1 objet null est égal à un autre objet si et seulement si l'autre objet est null
  124.      retourne -1 si non, ou l'index de la chaine en question si oui     
  125.   */
  126.   public static int equals(String s, String[] to, Comparator comp) {
  127.     if (s == null) {
  128.      for (int i =0; i < to.length; i++) {
  129.        if (to[i] == null) {
  130.          return i;
  131.        }
  132.      }
  133.      return -1;
  134.     }
  135.     for (int i = 0; i < to.length; i++) {
  136.      if (comp.compare(s, to[i]) == 0) {
  137.        return i;
  138.      }
  139.     }
  140.     return -1;
  141.   }
  142.   public static void testEquals () {
  143.     String s = "oUi";
  144.     if (equals(s, new String[] {"o", "O", "oui", "OUI", "Oui"}) != -1) {
  145.      System.out.println("s = affirmatif (equals)" );
  146.     } else {
  147.       System.out.println("s != affirmatif (equals)" );
  148.     }
  149.    
  150.     if (equalsIgnoreCase(s, new String[] {"o","oui"}) != -1) {
  151.        System.out.println("s = affirmatif (equalsIgnoreCase)" );
  152.     }  else {
  153.       System.out.println("s != affirmatif (equalsIgnoreCase)" );
  154.     }   
  155.   }
  156.  
  157.  
  158.   public static void main (String[] args) {
  159.     testEquals();
  160.   }
  161.  
  162. }
  163. /** est utilisée dans StringUtils.equals(String, String[]) */
  164. final class StringComparator implements Comparator {
  165.   public int compare(Object a, Object b) { return ((String) a).compareTo((String) b); }
  166. }
  167. /** est utilisée dans StringUtils.equalsIgnoreCase(String, String[]) */
  168. final class IgnoreCaseStringComparator implements Comparator {
  169.   /** <b>utilisé uniquement pour le test d'égalité !!!!</b> */
  170.   public int compare(Object a, Object b) { return ((String) a).equalsIgnoreCase(((String) b))?0:-1; } 
  171. }


Message édité par benou le 17-06-2002 à 15:44:45
Reply

Marsh Posté le 17-06-2002 à 18:16:39    

je susi dégouté ! je vous donne une belle classe super pratique et y a personne qui dit rien  
:cry: :cry:

Reply

Marsh Posté le 17-06-2002 à 18:20:15    

benou a écrit a écrit :

je susi dégouté ! je vous donne une belle classe super pratique et y a personne qui dit rien  
:cry: :cry:  




 
scool
merci  :sol:


---------------
Mon photoBlog quilaibien -- Galerie HFR
Reply

Marsh Posté le 17-06-2002 à 18:29:58    

benou a écrit a écrit :

je susi dégouté ! je vous donne une belle classe super pratique et y a personne qui dit rien  
:cry: :cry:  




vévé, minute minute papillon, c long a lire:)
à premiere vue (tres tres rapide), y'a bcp de trucs qui sont déjà plus ou moins dans String ou Arrays non?

Reply

Marsh Posté le 17-06-2002 à 18:31:30    

Pulpipi a écrit a écrit :

 
scool
merci  :sol:  




c'était pas forcément des mercis que je voulais mais j'étais deg qu'il tombe si vite dans les abimes de l'oublie du forum ...
 
enfin, merci de ton merci :D

Reply

Marsh Posté le 17-06-2002 à 18:32:15    

greg@freestarthu a écrit a écrit :

 
vévé, minute minute papillon, c long a lire:)
à premiere vue (tres tres rapide), y'a bcp de trucs qui sont déjà plus ou moins dans String ou Arrays non?  




bha non sinon je les aurai pas mit ...
 
à quoi tu penses ?

Reply

Marsh Posté le 17-06-2002 à 18:33:59    

le principe c'est justement de rajouter des trucs qui manquent (genre le replace de String, ou le startsWithIgnoreCase)

Reply

Marsh Posté le 17-06-2002 à 18:33:59   

Reply

Marsh Posté le 17-06-2002 à 18:38:49    

benou a écrit a écrit :

 
bha non sinon je les aurai pas mit ...
 
à quoi tu penses ?  




 
pour le startsWithIgnoreCase on pourrait utiliser

Citation :

regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

il me semble?
(j'ai pas fait super gaffe)
 
pour le startsWith on pourrait utiliser

Citation :

boolean startsWith(String prefix, int toffset)  


(tu dis que ta fonction à un parametre en plus mais c pas justement la meme chose que cet offset là?
 
et pour les fonctions qui testent si un string est dans une array:

Citation :

Arrays.binarySearch(Object[] a, Object key)

 
 
ou bien

Citation :

Arrays.asList(Object[] a).contains(String s)

non?
 
 
edit: maintenant bon, il est bien possible que tes fonctions soient plus performantes que certaines des solutions que je propose:)
et je ne jette pas ta classe, j'y jetterai un oeil quand j'aurai besoin de ce genre de choses:)


Message édité par greg@freestarthu le 17-06-2002 à 18:41:21
Reply

Marsh Posté le 17-06-2002 à 18:39:46    

benou a écrit a écrit :

le principe c'est justement de rajouter des trucs qui manquent (genre le replace de String, ou le startsWithIgnoreCase)  




bon sinon pour le replace de String, merci:)
(mais tu penses bien que j'en ai un aussi, ça doit meme etre à peut pres la 1e chose que j'ai écrite tout seul de mes petites mains quand j'ai commencé à faire du java:))

Reply

Marsh Posté le 17-06-2002 à 18:55:37    

ben alors benou, tu boudes ou quoi? :/

Reply

Marsh Posté le 17-06-2002 à 23:00:48    

greg@freestarthu a écrit a écrit :

ben alors benou, tu boudes ou quoi? :/  




nop, je fesais un tennis ... je viens de rentrer, et de manger
 
bon ben pour le startsWith, je dois reconnaître que je suis dégouté : Comment j'ai fait pour louper la méthode regionMatches depuis le temps que je fais du Java :??:  
merci :jap:
 
pour le binary Search, ca pourrait marcher, mais il faudrait que le tableau soit trié.

Reply

Marsh Posté le 17-06-2002 à 23:51:24    

benou a écrit a écrit :

 
nop, je fesais un tennis ... je viens de rentrer, et de manger
 
bon ben pour le startsWith, je dois reconnaître que je suis dégouté : Comment j'ai fait pour louper la méthode regionMatches depuis le temps que je fais du Java :??:  
merci :jap:



:jap:

benou a écrit a écrit :

 
pour le binary Search, ca pourrait marcher, mais il faudrait que le tableau soit trié.  




ha vi en effet :jap: ;-)


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed