做一个关于代码HS的课程,错误说"Bad operator types for binary operator"与公共无效的线路。不知道我做错了什么



练习方向

在这个练习中,你必须参加分数课程并通过添加一些方便的方法对其进行扩展。

public void add(Fraction other)
public void subtract(Fraction other)
public void multiply(Fraction other)
public int getNumerator();
public int getDenominator();
public void setNumerator(int x);
public void setDenominator(int x);
public String toString();

使用FractionTester文件进行测试。

注意

public void add(Fraction other)
public void subtract(Fraction other)
public void multiply(Fraction other)

是void方法。他们什么也不回。这些方法不应创建新的分数并返回。

相反,这些方法应该修改要添加、减去或乘以Fraction other的实例变量。

例如,以下代码:

Fraction first = new Fraction(1, 2);
Fraction second = new Fraction(1, 3);
System.out.println();
System.out.println("BEFORE:");
System.out.println("first: " + first);
System.out.println("second: " + second);
first.multiply(second);
System.out.println("AFTER:");
System.out.println("first: " + first);
System.out.println("second: " + second);

应打印出来:

之前:第一个:1/2第二:1/3

之后:第一个:1/6秒:1/3第一个分数被修改为乘以第二个分数。第一个受影响,第二个没有。1/2变成了1/6,因为它乘以了1/3。

这是我的代码:

public class Fraction
{
// Create your instance variables and constructor here
//Instance variables
private int num;
private int den;
//Constructor
public Fraction(int nume, int dene)
{
num = nume;
den = dene;
}

public void add(Fraction other) 
{
Fraction a = num/den + other;
}
public void subtract(Fraction other) 
{
Fraction b = num/den - other;
}
public void multiply(Fraction other) 
{
Fraction c = num/den * other;
}
public String toString() 
{
return "";
}
}

不能将int(例如den或num(直接与Fraction对象相乘。您需要dereference传递的fraction参数,然后更新calling instancedennum组件。

这个


public void multiply(Fraction other)  {
Fraction c = num/den * other;
}

需要用这个替换。

public void multiply(Fraction other)  {
num = num * other.num;
den = den * other.den;
}

当你做加法或减法时,你需要找到共同的分母。

相关内容

最新更新