在 Java 中确定一个数字是否是 Double

我是一个 Java 新手,我正在试图弄清楚一个数字是否是一个 Double,它是这样的:

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

如果有人能告诉我如何重新安排语法,使这个工作正常,将不胜感激。

190857 次浏览

Try this:

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

Reflection is slower, but works for a situation when you want to know whether that is of type Dog or a Cat and not an instance of Animal. So you'd do something like:

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

Not saying the answer above does not work, except the null checking part is necessary.

Another way to answer that is use generics and you are guaranteed to have Double as any element of items.

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

Use regular expression to achieve this task. Please refer the below code.

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

Since this is the first question from Google I'll add the JavaScript style typeof alternative here as well:

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