web-dev-qa-db-fra.com

Déterminer si un nombre est un Double in Java

Je suis un débutant Java. J'essaie de déterminer si un nombre est un double avec quelque chose comme ceci:

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

J'apprécierais que quelqu'un me dise comment réorganiser la syntaxe pour que cela fonctionne correctement.

84
Kerzin

Essaye ça:

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

La réflexion est plus lente, mais fonctionne dans une situation où vous voulez savoir si c'est du type Chien ou un Chat et non une instance de Animal. Donc, vous feriez quelque chose comme:

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

Ne pas dire que la réponse ci-dessus ne fonctionne pas, sauf que la vérification à zéro est nécessaire.

Une autre façon de répondre consiste à utiliser des génériques et à garantir que Double est un élément quelconque.

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

Comme il s’agit de la première question de Google, je vais également ajouter le style JavaScript typeof alternatif:

myObject.getClass().getName() // String
7
Rob Fox

Utilisez une expression régulière pour accomplir cette tâche. Veuillez vous reporter au code ci-dessous.

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
kumaranc