java - 创建一个类然后测试该类

标签 java

<分区>

我正在学习 Java,并且正在阅读 Deitel 和 Deitel 的书“Java:如何编程”。边学边练背。我正在进行的具体练习是:

创建一个具有属性长度和宽度的矩形类,每个属性默认为1。提供计算矩形周长和面积的方法。对长度和宽度使用 set 和 get 方法。 set 方法将验证长度和宽度均为大于 0.0 且小于 20.0 的 float 。编写一个程序来测试 Rectangle 类。

这是我创建的类:

 package rectangle;

 public class Rectangle {

     public float rectangle;
     public float length;
     public float width;
     public float perimeter;
     public float area;

     public Rectangle(float length, float width){

        if(length < 0.0 || length >= 20.0){
             throw new IllegalArgumentException("Length must be between 0.0 and 20.0");
         }
        if(width < 0.0 || width >= 20.0){
             throw new IllegalArgumentException("Width must be between 0.0 abnd 20.00");
         }

         this.length = length;
         this.width = width;
     }


     public float getLength(){
         return length;
     }

     public float getWidth(){
         return width;
     }

     public void setPerimeter(float perimeter){
         perimeter = ((getLength() *2) + (getWidth()*2));
     }

     public float getPerimeter(){
         return perimeter;
     }

     public void setArea(float area){
         area = getLength() * getWidth();
     }

     public float area(){
         return area;
     }

 }

这是测试类或驱动类:

 package rectangle;

 public class TestRectangle {

         public static void main(String[] args){
                Rectangle rectangle1 = new Rectangle (3.2, 3.3);

                System.out.printf("The perimeter of rectangle1 is: %d%n", rectangle1.getPerimeter());      

         }

 }

当我运行测试类(在 IDE 中)时显示此警告:

“不兼容的类型:从 double 到 float 的可能有损转换。”

我不明白为什么 IDE 会出现这个警告。谁能帮忙?

最佳答案

在 Java 中,文字值 1.0 或任何其他正常的十进制值都被视为 double 值(64 位浮点值)。您的构造函数将 float (32 位浮点值)作为输入。您正在尝试将 64 位数字传递给采用 32 位数字的函数。 Java 永远不会让您做任何可能失去精度的事情(例如将 float 传递给 int 方法或将 double 传递给 float 方法)。解决这个问题的最好方法是说

Rectangle rectangle1 = new Rectangle (3.2f, 3.3f);

添加 f 告诉 java 文字是 32 位 float ,而不是 64 位 double 。您还可以添加类型转换:

Rectangle rectangle1 = new Rectangle ((float) 3.2, (float) 3.3);

但使用 f 符号更为可取。

关于java - 创建一个类然后测试该类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980466/

相关文章:

java - JAXB 将分组元素添加到列表中,类似于 .NET

java - IntelliJ 2019.2.2 : Unable to debug gradle unit tests

java - 将java编译为 native 代码

java - gradle:找不到@Entity符号

java - 在 Eclipse 中粘贴多行 Java 字符串

java - 有没有办法存储多个 JID?

java - 套接字异常 : Connection reset after reconnect

Java StringBuilder 附加垂直制表符失败

java - 导入包时出错

java - 在 JSF Converter 类的 getAsObject() 和 getAsString() 方法中转换什么值