Я новичок в Java. Я пытаюсь выяснить, является ли число двойным с чем-то вроде этого:
if ( typeof ( items.elementAt(1) )== Double ) {
sum.add( i, items.elementAt(1));
}
Был бы признателен, если бы кто-нибудь мог сказать мне, как изменить синтаксис, чтобы это работало правильно.
object o = new object(); Type t = typeof(o);
выдает ошибку компилятораo is a variable but is used like a type
. Название этого вопроса вводит в заблуждение ...Object#GetType()
метод, который возвращаетType
. Затем это можно использовать для сравнения сtypeof()
. В этом случае было быitems.elementAt(1).GetType() == typeof(double)
.Ответы:
Попробуй это:
if (items.elementAt(1) instanceof Double) { sum.add( i, items.elementAt(1)); }
источник
elementAt(0)
; большинство вещей в Java начинаются с нуля.Поскольку это первый вопрос от Google, я также добавлю
typeof
сюда альтернативный стиль JavaScript :myObject.getClass().getName() // String
источник
Отражение происходит медленнее, но работает в ситуации, когда вы хотите знать, относится ли это к типу 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 как любой элемент items.
List<Double> items = new ArrayList<Double>();
источник
.getClass().toString()
что я не могу импортировать класс из-за односторонней зависимости. Спасибо.Используйте регулярное выражение для достижения этой задачи. Пожалуйста, обратитесь к приведенному ниже коду.
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); } }
источник