Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1391 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°160551
brisssou
8-/
Posté le 17-06-2002 à 10:51:25  profilanswer
 

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
mood
Publicité
Posté le 17-06-2002 à 10:51:25  profilanswer
 

n°160553
darklord
You're welcome
Posté le 17-06-2002 à 10:55:10  profilanswer
 

non


---------------
Just because you feel good does not make you right
n°160575
brisssou
8-/
Posté le 17-06-2002 à 11:07:37  profilanswer
 

oki


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°160936
benou
Posté le 17-06-2002 à 15:43:49  profilanswer
 

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
n°161247
benou
Posté le 17-06-2002 à 18:16:39  profilanswer
 

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

n°161248
pulpipi
Un ours cé relativement gros
Posté le 17-06-2002 à 18:20:15  profilanswer
 

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
n°161250
greg@frees​tarthu
Posté le 17-06-2002 à 18:29:58  profilanswer
 

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?

n°161254
benou
Posté le 17-06-2002 à 18:31:30  profilanswer
 

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

n°161255
benou
Posté le 17-06-2002 à 18:32:15  profilanswer
 

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 ?

n°161258
benou
Posté le 17-06-2002 à 18:33:59  profilanswer
 

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

mood
Publicité
Posté le 17-06-2002 à 18:33:59  profilanswer
 

n°161259
greg@frees​tarthu
Posté le 17-06-2002 à 18:38:49  profilanswer
 

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
n°161260
greg@frees​tarthu
Posté le 17-06-2002 à 18:39:46  profilanswer
 

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:))

n°161266
greg@frees​tarthu
Posté le 17-06-2002 à 18:55:37  profilanswer
 

ben alors benou, tu boudes ou quoi? :/

n°161375
benou
Posté le 17-06-2002 à 23:00:48  profilanswer
 

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é.

n°161429
greg@frees​tarthu
Posté le 17-06-2002 à 23:51:24  profilanswer
 

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^/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
[java - applet] exécuter une commande sur le serveur web ? !Problème de java sur un page html.... et j'ai rien fait de mal !!
Problème de java sur un page html....[Java] Conseil pour un bouquin de dev GUI Swing
[java] dernière occurence d'un caractère dans une String(JAVA]couleur + fonte JLabel
[Java] obtenir le code ASCII d'un caractère[Java] pb avec les Exceptions
[C --> Java] Quel est l'équivalent d'un enum[java - applet] comment traduire "trusted" applet en français ?
Plus de sujets relatifs à : (JAVA) Comment faire des cases en cascades en Java ?!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR