Javaで数値がDoubleかどうかを判断する


92

私はJava初心者です。私は数値が次のようなものでDoubleであるかどうかを理解しようとしています:

if ( typeof ( items.elementAt(1) )== Double ) {
       sum.add( i, items.elementAt(1));
}

誰かがこれを正しく機能させるために構文を再配置する方法を教えてもらえれば幸いです。


それは私だけですか、それともtypeof(object)は実際にはC#で実際のものではありませんか?私はいつもそれがtypeof(type)だと思っていました... object o = new object(); Type t = typeof(o);と言ってコンパイラエラーをスローしますo is a variable but is used like a type。この質問の名前は誤解を招くようです...
Dan Rayson

C#では、すべてのオブジェクトObject#GetType()にを返すメソッドがありますType。次に、と比較するために使用できtypeof()ます。この場合は、になりますitems.elementAt(1).GetType() == typeof(double)
フロンティア

回答:


154

これを試して:

if (items.elementAt(1) instanceof Double) {
   sum.add( i, items.elementAt(1));
}

19
+1。また、あなたが実際に確認したいと思っていますelementAt(0)。Javaの大部分はゼロベースです。
ChssPly76

16

これはGoogleからの最初の質問なので、typeofここでもJavaScriptスタイルの選択肢を追加します。

myObject.getClass().getName() // String

9

リフレクションは低速ですが、それがDogのタイプであるかCatであり、Animalのインスタンスではないかを知りたい場合に機能します。だからあなたは次のようなことをするでしょう:

if(null != items.elementAt(1) && items.elementAt(1).getClass().toString().equals("Cat"))
{
//do whatever with cat.. not any other instance of animal.. eg. hideClaws();
}

上記の答えを言わないことは、ヌルチェック部分が必要であることを除いて機能しません。

これに答える別の方法はジェネリックを使用することであり、アイテムの要素としてDoubleを持つことが保証されます。

List<Double> items = new ArrayList<Double>();

9
人々が否定的な評価の理由を述べることを学んでもらえますか?私もJavaの初心者です。この答えのどこが悪いのかを知りたいので、試す必要はありません。
エンレイ2014年

1
ハードコードされた文字列との比較は避けます。クラス名が変更された場合、instanceofも存在するため、それを使用します。

@enrey instanceofに対するこれの利点は何ですか?
Charles Shiller、2016

@CharlesShiller利点は、文字列「Cat」の遅延バインディングです。
ロビノ2018年

2
+1は.getClass().toString()、一方向の依存関係が原因でクラスをインポートできないためです。どうも。
Hannes Schneidermayer

1

このタスクを実行するには、正規表現を使用してください。以下のコードを参照してください。

public static void main(String[] args) {
    try {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter your content: ");
        String data = reader.readLine();            
        boolean b1 = Pattern.matches("^\\d+$", data);
        boolean b2 = Pattern.matches("[0-9a-zA-Z([+-]?\\d*\\.+\\d*)]*", data); 
        boolean b3 = Pattern.matches("^([+-]?\\d*\\.+\\d*)$", data);
        if(b1) {
            System.out.println("It is integer.");
        } else if(b2) {
            System.out.println("It is String. ");
        } else if(b3) {
            System.out.println("It is Float. ");
        }           
    } catch (IOException ex) {
        Logger.getLogger(TypeOF.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1
良い例、 'TypeOF'とは何ですか。最後の行に。
Eddie Kumar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.