Erreurs de types non convertibles en java


J'ai le code suivant:

import javax.swing.JOptionPane;

public class Excercise613 {
    /** 
      *  Display the prompt to the user; wait for the user to enter
      *  a whole number; return it.  
      */            

    public static int askInt(String prompt) {    
        String s = JOptionPane.showInputDialog(prompt);
        Double d = Double.parseDouble(s);
        return d >= 0 ? (int) d : (int) (d - 1);
    } // End of method
} // End of class

Lorsque je compile ceci, j'obtiens une erreur en bas de l'écran qui dit "types inconservables. requis: int; trouvé: java.lang.Double "Puis il met en évidence le morceau de code" (int) d".

Qu'est-ce que je fais de mal ici? Pourquoi la coulée de type ne fonctionne-t-elle pas?

Author: Belphegor, 2015-03-02

1 answers

Utilisez la fonction doubleValue ().

Par exemple:

import javax.swing.JOptionPane;

public class Excercise613 {
    // Display the prompt to the user; wait for the user to enter a whole number; 
    // return it.  
    public static int askInt(String prompt) {    
        String s = JOptionPane.showInputDialog(prompt);
        Double d = Double.parseDouble(s);                     
        return d >= 0 ? (int) d.doubleValue() : (int) (d.doubleValue() - 1);
    } // End of method
} // End of class

Ou vous pouvez supprimer les moulages (int) et appeler simplement d.intValue(). Exemple: return d >= 0 ? d.intValue() : (d.intValue() - 1);

 2
Author: Dermot Blair, 2017-11-13 15:29:20