找出数字是否为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)
Frontear

Answers:


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();
}

不说上面的答案是行不通的,除了必须使用null检查部分。

回答的另一种方法是使用泛型,并且可以确保将Double作为项目的任何元素。

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

9
您能不能让人们学会提出负面评价的理由?我也是Java的新手,我想看看这个答案出了什么问题,所以我不必尝试!
enrey 2014年

1
我会避免将其与硬编码字符串进行比较,如果类名发生更改,那么instanceof也存在,因此我们可以使用它。

@enrey与instanceof相比,这有什么优点?
Charles Shiller

@CharlesShiller的优点是字符串“ Cat”的后期绑定。
罗宾诺

2
+1的.getClass().toString()原因是由于单向依赖关系无法导入类。谢谢。
汉尼斯·施耐德

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'btw?在最后一行。
Eddie Kumar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.