java-me: convertissez la chaîne en booléen

je me développe pour BlackBerry et je suis coincé avec ce problème stupide:

je dois convertir les valeurs de chaîne "1" et " 0 " en true et false, respectivement. Néanmoins, Blackberry JDK est basé en Java 1.3, donc je ne peux pas utiliser booléen.parseBoolean, Boolean.valeur ou valeur booléenne.getValue.

Évidemment, je peux faire quelque chose comme:

if (str.equals("1")) return true;
else if (str.equals("0")) return false;

mais cela semble très laid et peut-être que ces valeurs de chaîne de caractères pourraient changer en "vrai" et "faux" plus tard. Alors, Est-il un autre façon de convertir entre ces types (chaîne - > booléen, Java 1.3)?

UPDATED: toutes les réponses à cette question étaient très utiles, mais je devais en noter Une, donc j'ai choisi la réponse d'Ishtar.

malgré tout, mon correctif était une combinaison de plusieurs réponses.

14
demandé sur Michael Donohue 2011-03-25 08:10:56

6 réponses

public static boolean stringToBool(String s) {
  if (s.equals("1"))
    return true;
  if (s.equals("0"))
    return false;
  throw new IllegalArgumentException(s+" is not a bool. Only 1 and 0 are.");
}

si vous le changez plus tard en "true / false", vous ne commanderez pas accidentellement 28 000 tonnes de charbon. Appeler avec le mauvais paramètre lancera une exception, au lieu de deviner et retourner false. À mon avis "pancake" n'est pas false.

14
répondu Ishtar 2011-03-25 16:48:02

Si vous n'avez pas Boolean.valueOf(String s) ... ouais, c'est assez bien. Je définirais votre propre méthode statique comme:

public static boolean booleanFromString(String s)
{
    return s.equals("1");
}

cela résoudrait votre problème" peut changer en vrai ou faux plus tard " car vous pourriez ajouter/changer cela dans la méthode et ne pas avoir à changer quoi que ce soit d'autre dans votre code.

9
répondu Brian Roach 2011-03-25 05:24:53

peut-être que ces valeurs de chaîne pourrait changer "true" et "false" plus tard

ne codez pas votre paramètre.

alors définissez votre propre méthode comme celle-ci.

public static final String TRUE = "true"; //"1"

public static boolean strToBool(String s) {
    // don't hard code your parameter.
    return str.equalsIgnoreCase(TRUE);
}
2
répondu Prince John Wesley 2011-03-25 05:52:16

Java est Boolean l'objet (si je me souviens bien) a déjà 2 constantes:

  • Boolean.TRUE
  • Boolean.FALSE

vous pouvez utiliser Boolean.booleanValue() pour le retour de la correspondante boolean valeur.

Vous pouvez créer votre propre valueOf(String s) méthode retourne un boolean et/ou Boolean comme ceci:

public static boolean toBoolean(String s) {
    return ((s != null) && s.equalsIgnoreCase("true"));
}

public static Boolean valueOf(String s) {
    return (toBoolean(s)? Boolean.TRUE : Boolean.FALSE);
}
2
répondu Buhake Sindi 2011-03-25 06:27:03

vous devez cocher les cases null et whitespace. les retirer et vérifier la valeur.

return (str!=null && str.trim().equals("1"));
2
répondu y0rk 2011-03-25 14:01:15
public static boolean stringToBool(String s) {
        s = s.toLowerCase();
        Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
        Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));

        if (trueSet.contains(s))
            return true;
        if (falseSet.contains(s))
            return false;

        throw new IllegalArgumentException(s + " is not a boolean.");
}

Améliorer Ishfar répondre.

0
répondu AechoLiu 2017-05-23 10:27:14