Java 在构造函数中将int转换为float

Java 在构造函数中将int转换为float,java,constructor,type-conversion,Java,Constructor,Type Conversion,我有以下代码: public class Rectangle extends java.awt.Rectangle { private Position position; public Rectangle(Rectangle toCopy) { this.position = toCopy.position; } public Rectangle(Position position, int width, int height) { super(width, he

我有以下代码:

public class Rectangle extends java.awt.Rectangle
{
    private Position position;


public Rectangle(Rectangle toCopy)
{
    this.position = toCopy.position;
}

public Rectangle(Position position, int width, int height)
{
    super(width, height);
    this.position = position;
}

这很好,但我需要的宽度和高度是浮动。问题是java.awt.Rectangle中的构造函数的宽度和高度采用int类型。有没有办法使宽度和高度在构造函数中浮动

只需使用如下方式将int转换为float:
float myfloat=(float)myInt

因此,改变这一点:

      public Rectangle(Position position, int width, int height)
{
super(width, height);
this.position = position;
}
为此:

   public Rectangle(Position position, int width, int height)
{
super((float) width,(float) height);
this.position = position;
}

我相信你在找我。这允许您将
float
转换为
int
。您的示例中的实现是:

public Rectangle(Position position, float width, float height) // Changed types to float
{
    super((int) width, (int) height); // Cast from float to int
    this.position = position;

    // width & height are floats, like requested
}

也许你可以试试这个:

int i;
float f = i * 1.0f;

我以为OP希望构造函数参数是浮点数。现在我不是100%确定。所以我尝试了一下,得到了这个编译错误:构造函数矩形。矩形(int,int)不适用于参数不匹配;从float到int的可能有损转换)@AaronN.Brock代码的构造函数需要接受java.awt.Rectangle类中的变量。是的,它们必须是浮子。但是java.awt.Rectangle类将这些变量作为int,我不知道如何将它们转换为float。@MattyS11为什么它们必须是float?java.awt.rectangle的超级构造函数接受整数。@这就是问题所在。我的项目负责人起草了类图,在构造器中说它们需要是浮动的。我显然需要从java.awt.rectangle中获取这些。原因是因为我们使用的矩形将被用作一种点击框,我想位置需要是浮动的,以便在数学上精确。问:你真的想用与java.awt.rectangle完全相同的名称来称呼“你的”矩形吗?可能是个坏主意。问:你真的想投(int)吗;失去精度?可能是个坏主意。MAIN Q:为什么首先要将java.awt.Rectangle子类化?你定制“矩形”课程的动机到底是什么?另外:在这里寻找铸造的替代品:@paulsm4如果由我决定,我只会制作我自己的矩形类。。。。我根本不知道我们为什么要继承这个java.awt.Rectangle类。这只是一个项目,我的项目负责人设计了这个部分。我猜他只是不想写方法,把它留给内置的矩形类。就像我说的,如果由我决定,我会写我自己的矩形类,我想这会为我省去很多麻烦。非常感谢!!!我愚蠢地认为我的代码中的构造函数必须接受int,然后我将它们转换为float;和“0.9999”到“0”。。。如果要“微调”此行为,请查看此链接: