При прохождении курса по Code HS выдается сообщение об ошибке «Неверные типы операторов для бинарных операторов» для строк с publi c void. Не уверен, что делаю не так - PullRequest
2 голосов
/ 04 мая 2020

НАПРАВЛЕНИЯ УПРАЖНЕНИЯ

В этом упражнении вы должны взять класс Fraction из предыдущего и расширить его, добавив несколько удобных методов.

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 для тестирования go по мере продвижения.

Обратите внимание, что

public void add(Fraction other)
public void subtract(Fraction other)
public void multiply(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 "";
    }
}

1 Ответ

2 голосов
/ 04 мая 2020

Вы не можете умножить int (например, den или num) непосредственно на объект Fraction. Вам необходимо dereference переданный аргумент дроби, а затем обновить компоненты den и num в calling instance.

Это


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

Необходимо заменить на это .

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

При сложении или вычитании нужно найти общие знаменатели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...