完成此类方法-您知道吗?

问题描述 投票:-4回答:1

有人可以帮我完成这项任务吗?我将非常感谢!

完成类方法'copy(Fraction source,Fraction target)',以便在调用此方法后,'source'不变,并且'target'与'source'相同。

在这一行:target =源; //这里需要输入代码

class Fraction {

    Integer nominator;       
    Integer denominator;      

}

class Main
{
	public static void copy(Fraction source, Fraction target)
	{
		target = source; // Here I need to put the code
	}

	public static Fraction createFraction(Integer nominator, Integer denominator)
	{
        Fraction fraction = new Fraction();
        fraction.nominator = nominator;
        fraction.denominator = denominator;
        return fraction;
	}

	public static void main(String[] arguments)
	{
		final Integer ONE = 1;
		final Integer TWO = 2;
		final Integer THREE = 3;
		final Fraction SOURCE = createFraction(ONE, TWO);
		final Fraction TARGET = createFraction(TWO, THREE);
		copy(SOURCE, TARGET);
		System.out.println("SOURCE: " + toString(SOURCE));
		System.out.println("TARGET: " + toString(TARGET));
	}

	public static String toString(Fraction fraction)
	{
                return fraction.nominator + "/" + fraction.denominator;

	}
}
java class
1个回答
-1
投票

更新target(不是参考),具体地说,将sourcenominatordenominator值分别复制到target.nominatortarget.denominator。喜欢,

public static void copy(Fraction source, Fraction target)
{
    // target = source; // Good try, but this just updates a local reference
    target.nominator = source.nominator; // <-- copy the `nominator`
    target.denominator = source.denominator; // <-- copy the `denominator`
}

或者,同样,在setFraction上添加Fraction函数,例如

public void setFraction(Fraction f) {
    this.nominator = f.nominator;
    this.denominator = f.denominator;
}

而且,您不应该这样修改toString()。也将其添加到Fraction,>

@Override
public String toString() {
    return nominator + "/" + denominator;
}

而且我还将覆盖Object.equals(Object)中的Fraction

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o instanceof Fraction) {
        Fraction that = (Fraction) o;
        return nominator.equals(that.nominator) && denominator.equals(that.denominator);
    }
    return false;
}

然后您可以写

public static void copy(Fraction source, Fraction target)
{
    target.setFraction(source);
}

并且如果您跟随toString,则

System.out.println("SOURCE: " + toString(SOURCE));
System.out.println("TARGET: " + toString(TARGET));

可以是

System.out.println("SOURCE: " + SOURCE);
System.out.println("TARGET: " + TARGET);
System.out.println("TARGET.equals(SOURCE): " + TARGET.equals(SOURCE));
© www.soinside.com 2019 - 2024. All rights reserved.