java中的Inconvertible类型错误

时间:2015-03-01 23:38:05

标签: java casting

我有以下代码:

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

当我编译它时,我在屏幕底部出现错误,表示"不可转换的类型。      required:int;发现:java.lang.Double"然后它突出了"(int)d"一段代码。

我在这里做错了什么?为什么不进行类型转换?

1 个答案:

答案 0 :(得分:2)

使用doubleValue()函数。

例如:

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

或者您可以删除(int)演员,然后致电d.intValue()。例如: return d >= 0 ? d.intValue() : (d.intValue() - 1);