弄清楚Java中的数字是否为Double

87 java typeof

我是一个Java新手.我试图弄清楚一个数字是否是一个像这样的东西:

if ( typeof ( items.elementAt(1) )== Double ) {
       sum.add( i, items.elementAt(1));
}
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我如何重新排列语法以使其正常工作,我将不胜感激.

小智 144

试试这个:

if (items.elementAt(1) instanceof Double) {
   sum.add( i, items.elementAt(1));
}
Run Code Online (Sandbox Code Playgroud)

  • +1.我也在想你真的要检查`elementAt(0)`; Java中的大部分内容都是从零开始的. (19认同)

Rob*_*Fox 12

由于这是Google的第一个问题,因此我还将在typeof此处添加JavaScript样式替代项:

myObject.getClass().getName() // String
Run Code Online (Sandbox Code Playgroud)


Cho*_*oos 9

反射速度较慢,但​​适用于您想要知道是狗类型还是猫类而不是动物实例的情况.所以你要做的事情如下:

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

不是说上面的答案不起作用,除了空检查部分是必要的.

回答这个问题的另一种方法是使用泛型,你可以保证将Double作为任何项目元素.

List<Double> items = new ArrayList<Double>();
Run Code Online (Sandbox Code Playgroud)

  • 你能不能让人们学会说出负面评价的理由?我也是java的新手,我想看看这个答案有什么问题,所以我不必尝试! (9认同)
  • 为.getClass()。toString()+1,因为由于一种方法依赖关系无法导入类。谢谢。 (2认同)