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

创建一个类,然后测试该类 [重复]

郑西岭
2023-03-14

我正在学习爪哇,我正在通过德特尔

创建一个具有长度和宽度属性的类Rectangle,每个属性默认为1。提供计算矩形周长和面积的方法。对长度和宽度都使用set和get方法。set方法将验证长度和宽度都是大于0.0小于20.0的浮点数。编写一个程序来测试类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为什么会出现这个警告。有人能帮忙吗?

共有2个答案

仲学真
2023-03-14

你用这一行实例化了双精度。

Rectangle rectangle1 = new Rectangle (3.2, 3.3);

要制作浮动,您需要这样做:

Rectangle rectangle1 = new Rectangle (3.2f, 3.3f); 
宗政兴发
2023-03-14

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

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

添加f告诉java文字是32位浮点数,而不是64位双精度数。您还可以添加强制转换:

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

但使用f符号更可取。

 类似资料:
  • 本文向大家介绍Android 创建Espresso测试类,包括了Android 创建Espresso测试类的使用技巧和注意事项,需要的朋友参考一下 示例 将下一个Java类放在src / androidTest / java中并运行它。            

  • 早上好,我被分配了一个任务:将佣金雇员类重写为雇员的子类。佣金雇员应该只包含超类雇员中未声明的实例变量和方法。佣金雇员的构造函数应该调用雇员的构造函数,佣金雇员的toString方法应该调用雇员的toString方法。创建一个驱动程序类来测试你的新佣金雇员类。提示用户输入名字、姓氏、社会保险号、总销售额和佣金率并创建一个佣金雇员对象,使用toString方法打印其信息。我似乎遇到的问题是类佣金雇员

  • 为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith

  • 我目前正在与tkinter一起完成一项学校作业,为用户创建一个图形用户界面以输入他们的输入。我决定将输入分成不同的页面,以避免用户被问题淹没,并且不需要滚动 每一页都有一系列标签和条目,在一个右除数和一个左除数上分开,我已经设法在每一页上实现了这一点,付出了一些努力。这是我工作代码的简化版本: 然而,在将每个页面拆分为两个不同的Frame()容器时,我遇到了两个问题: 用ipadx和ipady设置

  • 创建一个表示学生的实体类 Student,其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息,最终编写测试代码。 首先定义一个名为 Student 的类,代码如下: 在类中通过属性定义学生、性别和年龄,代码如下: 在上述代码中将学生性别属性 Sex 设置为 private 作用域。为了对该属性进行获取和设置,还需要编写 isSex 和 setSex 方法。代码如下: 在 Student 类

  • 以下是用于实现重试逻辑的类 TestRetry类: RetryListener类: 样本测试: 当我执行上述测试时,以下是输出firsttest被执行并通过第二次测试依赖于firsttest并被执行,其失败-重试3次并再次失败第三次测试跳过,因为它依赖于第二次测试。 产量达到预期。 问:因为测试是依赖的,如果其中一个测试失败,我想先执行整个类,有办法吗? 示例:如果secondtest失败,我想再