З’ясування того, чи є число Java у Java


92

Я новачок Java. Я намагаюся зрозуміти, чи є число подвійним, приблизно таким чином:

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. Назва цього запитання неправдива ...
Ден

У c # усі об'єкти мають Object#GetType()метод, який повертає a Type. Потім це можна використовувати для порівняння typeof(). У цьому випадку це було б items.elementAt(1).GetType() == typeof(double).
Frontear

Відповіді:


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

Роздуми проходять повільніше, але працюють у ситуації, коли ви хочете дізнатися, чи це тип собаки чи кота, а не екземпляр тварини. Отже, ви зробите щось на зразок:

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, і я хотів би побачити, що не так з цією відповіддю, тому мені не доведеться її пробувати!
enrey

1
Я не хотів би порівнювати з жорстко закодованим рядком, а що, якщо ім'я класу зміниться, також instanceof існує, тому ми використовуємо це.

@enrey Яка перевага цього над instanceof?
Чарльз Шиллер

@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" до речі? в останньому рядку.
Едді Кумар,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.