web-dev-qa-db-ja.com

java-me:文字列をブール値に変換します

私はBlackBerry用に開発していますが、このばかげた問題で立ち往生しています。

文字列値「1」と「0」をそれぞれtrueとfalseに変換する必要があります。それにもかかわらず、BlackberryJDKはJava 1.3に基づいているため、Boolean.parseBoolean、Boolean.valueOf、またはBoolean.getValueを使用できません。

明らかに、私は次のようなことができます:

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

しかし、これは非常に見苦しく、これらの文字列値は後で「true」と「false」に変更される可能性があります。それで、これらのタイプ間で変換する別の方法はありますか(String-> boolean、Java 1.3)?

[〜#〜] updated [〜#〜]:この質問のすべての回答は非常に役に立ちましたが、1つをマークする必要があったため、Ishtarの回答を選択しました。

それでも、私の修正は複数の回答の組み合わせでした。

14
Jose S
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.");
}

後で「true/false」に変更しても、誤って注文することはありません 28,000トンの石炭 。間違ったパラメータで呼び出すと、推測してfalseを返す代わりに、例外がスローされます。私の考えでは "pancake"falseではありません。

14
Ishtar

Boolean.valueOf(String s)がない場合...ええ、それだけです。次のような独自の静的メソッドを定義します。

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

これにより、「後でtrueまたはfalseに変更される可能性がある」という問題が解決されます。これは、メソッドで追加/変更でき、コード内で他に何も変更する必要がないためです。

9
Brian Roach

JavaのBooleanオブジェクト(私が正しく覚えている場合)には、すでに2つの定数があります。

  • _Boolean.TRUE_
  • _Boolean.FALSE_

Boolean.booleanValue()を使用して、対応するboolean値を返すことができます。

独自のvalueOf(String s)メソッドを作成して、次のようにbooleanおよび/またはBooleanを返すことができます。

_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
Buhake Sindi

null文字と空白文字を確認する必要があります。それらを削除し、値を確認してください。

return (str!=null && str.trim().equals("1"));
2
y0rk

これらの文字列値は後で「true」と「false」に変更される可能性があります

パラメータをハードコーディングしないでください。

したがって、このように独自のメソッドを定義します。

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

public static boolean strToBool(String s) {
    // don't hard code your parameter.
    return str.equalsIgnoreCase(TRUE);
}
2
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.");
}

強化 Ishfar 答え。

0
AechoLiu