gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:36:59 25 4
gpt4 key购买 nike

我的代码有问题。当我尝试通过调用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com