Пользовательский метод умножения дроби в Java - PullRequest
0 голосов
/ 10 ноября 2018

Я использую JB IntelliJ IDEA и пытаюсь создать программу, которая содержит класс Fraction и метод multiplie, умножает две дроби и должен вернуть и напечатать что-то вроде этого: «Результат умножения: int / int», но он печатает: «Результат умножения: [I @ 7ea987ac».

Вот мой код:

Main.java:

package com.company;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     System.out.print("Numerator1 = ");
     int num1 = scan.nextInt();
     System.out.print("Denomerator1 = ");
     int denom1 = scan.nextInt();
     System.out.print("Numerator2 = ");
     int num2 = scan.nextInt();
     System.out.print("Denomerator2 = ");
     int denom2 = scan.nextInt();
    System.out.print("Multiplie result: " + Fraction.multiplie(num1,denom1,num2,denom1));
    }
}

и Fraction.java:

package com.company;

public class Fraction {
    static int numerator;
    static int denominator = 1;
    static int numerator2;
    static int denominator2;
    static int numeratorsmultiplie;
    static int denominatorsmultiplie;
    static int[]multiplieresult = new int[2];
    public Fraction(int numerator, int denominator) {
        if (denominator == 0) {
            System.out.println("Denominator can't be zero. Choose another one.");
            return;
        }
        this.numerator = numerator * (denominator < 0 ? -1 : 1);
        this.denominator = Math.abs(denominator);
        normalization();
    }
    public int getNumerator() {
        return numerator;
    }
    public int getDenominator() {
        return denominator;
    }
    public void setNumerator(int numerator) {
        this.numerator = numerator;
    }
    public void setDenominator(int denominator) {
        if (denominator == 0) {
            System.out.println("Denominator can't be zero. Choose another one.");
            return;
        }
        if (denominator < 0) {
            this.numerator *= -1;
        }
    }
    private int gcd(int numerator, int denominator) {
        while (numerator != 0 && denominator != 0) {
            if (numerator > denominator) {
                numerator %= denominator;
            } else {
                denominator %= numerator;
            }
        }
        return numerator + denominator;
    }
    private void normalization() {
        int n = gcd(Math.abs(numerator), Math.abs(denominator));
        numerator /= n;
        denominator /= n;
    }
    public static int[] multiplie(int numerator, int denominator, int numerator2, int denominator2) {
        numeratorsmultiplie = numerator * numerator2;
        denominatorsmultiplie = denominator * denominator2;
        final int[] ret = {numeratorsmultiplie, denominatorsmultiplie};
        return ret;
    }
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Удалить все переменные в «Fraction.java», кроме:

private static int numerator; private static int denominator;

и измените multiplie метод на:

static String multiply(int numerator, int denominator, int numerator2, int denominator2) { int numeratorsmultiply = numerator * numerator2; int denominatorsmultiply = denominator * denominator2; String numeratorsmultiplystr = Integer.toString(numeratorsmultiply); String denominatorsmultiplystr = Integer.toString(denominatorsmultiply); return numeratorsmultiplystr + " / " + denominatorsmultiplystr; }

Также измените "Main.java" напечатать строку до:

<code>System.out.print("Multiplie result: " + Fraction.multiply(num1, denom1, num2, denom2));

0 голосов
/ 10 ноября 2018

Изменение

System.out.print("Multiplie result: " + Fraction.multiplie(num1,denom1,num2,denom1))

до

System.out.print("Multiplie result: " + Arrays.toString(Fraction.multiplie(num1,denom1,num2,denom1)));

, поскольку ваш метод multiplie возвращает int [].

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