java - 前一个变量的值变为当前变量的值

标签 java

我的代码有问题。当我尝试通过调用 isEqual() 方法来比较具有不同值的两个变量时。但它给了我一个真实的结果。有人能发现问题吗? 我的浮点类

import io.*;

//Class FloatingPoint

public class FloatingPoint
{

    //Constant
    public static final double MINPRECISION = 0.00000001;

    //Variable
    private static double precision;

    //Default constructor
    public FloatingPoint()
    {
        precision = MINPRECISION;
    }

    //Unsure if need a alternatve
    //Alternative constructor
    public FloatingPoint(double value)
    {
        if( (value < 0.0) || (value > 1.0) )
        {
            throw new IllegalArgumentException("Invalid reliability!");
        }
        setPrecision(value);
    }

    //Copy Constructor
    public FloatingPoint(FloatingPoint num)
    {
        precision = num.getPrecision();
    }

    //getPrecision
    public double getPrecision()
    {
        return precision;
    }

    //isEqual
    public boolean isEqual(FloatingPoint num)
    {
        return (Math.abs(precision - num.getPrecision()) < MINPRECISION);
    }

    //setPrecision
    public static void setPrecision(double value)
    {
        precision = value;
    }
}

这是我的主课

import java.io.*;

public class TestFloatingPoint
{

    public static void main(String [] args)
    {

        FloatingPoint f1, f2;
        f1= new FloatingPoint(0.2);
        System.out.print(f1.toString());

        f2=new FloatingPoint(1.0);
        System.out.print(f2.toString());
        System.out.print(f1.toString());

        System.out.print(f1.isEqual(f2));
        System.exit(0);
    }
}

最佳答案

As I try to compare two variables with different values by calling isEqual() method.

您没有具有不同值的变量,因为您只有一个值 - 静态变量:

private static double precision;

(将 setPrecision 的声明也更改为非静态。)

将其声明为static意味着它与类型相关联,而不是与您的类型的任何实例相关联。您的类没有声明任何实例字段,因此没有任何状态(对象标识除外)。

简单的修复方法是将其设为实例字段:

private double precision;

但是您应该详细了解 static 的含义,以便您可以决定将来何时使用它以及何时不使用它。请参阅Java tutorial作为起点。

关于java - 前一个变量的值变为当前变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339080/

相关文章:

java - 如何在项目结构的特定位置创建.project描述文件

java - 使用文本文件中的数据的符号有向图

java虚拟方法: feature or bug?

java - HttpClient 执行两次后停止在循环中执行相同的 HttpGet 方法

java - 使用映射为使用 RestTemplate 的 rest 调用设置参数

java - Amazon Glacier - 获取保管库中的文件列表

java - map 无法放大

javascript - 添加 JS Web 资源以在速度中使用

java - 无法覆盖通用接口(interface)

java - java中的存款证明公式