java - 如何用变量初始化 Java 对象?

标签 java object dynamic instance

我正在尝试启动一个存储分子 p、分母 q 及其比率 r 的对象“有理数”。此代码产生不正确的答案。

class Rational { 
    int p, q;
    double ratio;

    public Rational(){
        this.p = 0;
        this.q = 1;
        this.ratio = this.p/(double)(this.q);
    }

    public static void main (String[]arg)  {
        Rational r1 = new Rational();

        r1.p = 1;  
        r1.q = 7;
        // r1.ratio = r1.p/(double)(r1.q);    //"this line"
        System.out.println (r1.p  + "/" + r1.q + " = " + r1.ratio) ;
    }
}

取消注释“这一行”解决了这个问题。如何定义对象,以便每次 this.pthis.q 更改时自动更新 this.r

最佳答案

在我看来,更简单的方法是定义一个名为 ratio 的函数,而不是变量。

class Rational { 
private int p, q;


public Rational(){
  this.p = 0;
  this.q = 1;
}

public double ratio(){
  return (double)p/(double)q;
}

//define the getters and setters for p and q
}

然后,无论何时您需要该比率,您都应该调用该方法: myRational.ratio()

关于java - 如何用变量初始化 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36365729/

相关文章:

java - Mongodb Java cmd find().pretty() 不工作

java - 多线程阻塞工作线程

java - 查找数字中位数的速度

jquery - 自定义形状并通过带有 jquery 的按钮更改背景图像?

javascript - 我正在尝试从 xhtml 文件动态提取 <h3> 元素并将它们放入选择列表中

java - 创建具有可变子类标识的实例(w\o instanceof Cases\if-else-)

javascript - 从字符串创建对象(动态)

java - Java 中奇怪的对象/类行为

Python对象交互

c# - 通过对DynamicObject的TryInvokeMember覆盖使用扩展方法