96 votes

Déterminer si un nombre est un double en Java

Je suis un novice en 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 si quelqu'un pouvait me dire comment réorganiser la syntaxe pour que cela fonctionne correctement.

159voto

user26529 Points 1

Essayez ça :

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

18voto

Rob Fox Points 1386

Comme il s'agit de la première question de Google, je vais ajouter le style JavaScript. typeof alternative ici aussi :

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

8voto

Diwas Pathak Points 108

La réflexion est plus lente, mais fonctionne dans une situation où vous voulez savoir si un objet est de type chien ou chat et non une instance d'animal. Vous feriez donc 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();
}

Je ne dis pas que la réponse ci-dessus ne fonctionne pas, mais la vérification de la nullité est nécessaire.

Une autre façon de répondre à cette question est d'utiliser des génériques et vous avez la garantie d'avoir Double comme n'importe quel élément des éléments.

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

1voto

kumaranc Points 105

Utilisez une expression régulière pour réaliser cette tâche. Veuillez vous référer 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);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X