当前位置: 首页 > 知识库问答 >
问题:

无法将integer强制转换为Double(包装器类)

辛星宇
2023-03-14

我试图创建一个函数,如果x和y是整数,则返回x和y之间的随机整数,但如果x或y是双精度的,则该函数返回x和y之间的双精度。但当我尝试使用整数时,它引发了一个异常:“类java.lang.integer不能转换为类java.lang.double(java.lang.integer和java.lang.double位于加载程序“引导程序”的模块java.base中)”“如何修复它?

public class Test {
    public static void main(String[] args) {
        System.out.print(rand(10,12.0));
    }
    public static<t extends Number> double rand(t x,t y) {
        double a = (double) x;
        double b = (double) y;
        b = a < b ?(a + (b - a) * Math.random()):(b + (a - b) * Math.random());
        return (x instanceof Double || y instanceof Double) ? b : (int) b;
    }
}

共有1个答案

宣星光
2023-03-14

问题是您使用的是引用类型(包装类),而不是基元类型。从int到double的转换有效,但从Integer到double的转换无效。因此,您需要找到其他方法来转换它。

由于定义了扩展编号,因此可以对x和y使用编号的任何方法。

因此,请使用以下选项,而不是强制转换为双倍:

public static<t extends Number> double rand(t x,t y) {
  double a = x.doubleValue();
  double b = y.doubleValue();
 类似资料:
  • 问题内容: 我正在尝试将字符串转换为,但是得到了。 我的字串是,现在我将其转换为我所拥有的任何一个。 我如何将其转换为它们中的任何一个。 请帮助我摆脱这个问题。 问题答案: 您必须为数字使用适当的语言环境,例如 版画

  • 问题内容: 任何方式投来? 引发异常 问题答案: A 不是,因此强制转换将不起作用。请注意Double 类和double 原始类型之间的区别。另请注意,a 是a ,因此它具有方法 ,你可以使用该方法将值作为原始值获取int。

  • 本文向大家介绍在Java中将Double转换为Integer,包括了在Java中将Double转换为Integer的使用技巧和注意事项,需要的朋友参考一下 首先,初始化一个double值- 现在,使用intValue()方法将Double转换为Integer值- 示例 以下是在Java中将Double转换为Integer的程序- 输出结果

  • 问题内容: 我有MainActivity类,该类具有实例化ApplicationBar的方法,所有其他Activity都从此继承,因此他们可以使用此方法。 但是我也有一个MapHolder类,它必须从xml中扩展,因为它使用来显示地图。问题是如果我从不显示ApplicationBar选项卡扩展它,并且从MainActivity扩展它而不显示地图,则出现此错误: 问题答案: 您正在尝试将a强制转换为

  • 问题内容: 我收到以下异常。 造成原因: java.lang.ClassCastException:无法将java.math.BigInteger强制转换为java.lang.Integer 用下面的代码 在这条线 有人知道吗? 问题答案: 您可以使用: 或者也许覆盖了和价值观。

  • 问题内容: 我长期困扰这个问题。我有一段时间搜索此问题,但没有解决方案。 结构体: 我也用我 在我的。 请提供有关如何解决此问题的一些信息。 问题答案: 从中删除注释并使其: 发生您的问题是因为的特化,这意味着Spring将尝试创建注入实例。由于superclass()不是通用的,因此您无法将其向下转换为,因此这行代码将失败(与尝试使用手动实例化该代码的方式相同): 专业课仍应使用注释。当spri