Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的分数乘法器自定义方法_Java_Oop - Fatal编程技术网

Java中的分数乘法器自定义方法

Java中的分数乘法器自定义方法,java,oop,Java,Oop,我正在使用JB IntelliJ IDEA并试图创建一个程序,其中包含类分数和方法乘法,将两个分数相乘,并应返回和打印如下内容:“乘法结果:int/int”,但它打印:“乘法结果:[I@7ea987ac“ 这是我的密码: Main.java: package com.company; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s

我正在使用JB IntelliJ IDEA并试图创建一个程序,其中包含类
分数
和方法
乘法
,将两个分数相乘,并应返回和打印如下内容:“乘法结果: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;
    }
}
package.com公司;
公共类分数{
静态整数分子;
静态整数分母=1;
静态整数2;
静态int分母2;
静态整数倍数;
静态整数分母倍数;
静态整数[]乘数结果=新整数[2];
公共分数(整数分子、整数分母){
如果(分母==0){
System.out.println(“分母不能为零,选择另一个。”);
返回;
}
分子=分子*(分母<0?-1:1);
this.denominor=Math.abs(分母);
归一化();
}
公共整型getNumerator(){
返回分子;
}
公共整数getDenominator(){
返回分母;
}
公共无效集合分子(整数分子){
这个。分子=分子;
}
公共无效集合分母(整数分母){
如果(分母==0){
System.out.println(“分母不能为零,选择另一个。”);
返回;
}
if(分母<0){
这个。分子*=-1;
}
}
专用整数gcd(整数分子、整数分母){
while(分子!=0和分母!=0){
if(分子>分母){
分子%=分母;
}否则{
分母%=分子;
}
}
返回分子+分母;
}
私有void规范化(){
int n=gcd(数学abs(分子),数学abs(分母));
分子/=n;
分母/=n;
}
公共静态整数[]倍数(整数分子、整数分母、整数分子2、整数分母2){
分子倍数=分子*分子2;
分母倍数=分母*分母2;
final int[]ret={numeratorsmiplie,deminatorsmiplie};
返回ret;
}
}
更改

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

由于您的
multiplie
方法返回一个
int[]

删除“Fraction.java”中的所有变量,不包括:

私有静态整数分子;
专用静态整数分母;

并将
multiplie
方法更改为:


静态字符串乘法(整数分子、整数分母、整数分子2、整数分母2){
int numeratorsmultiply=分子*分子2;
整数分母乘法=分母*分母2;
字符串numeratorsmultiplystr=Integer.toString(numeratorsmultiplystr);
字符串分母multiplystr=Integer.toString(分母multiply);
返回numeratorsmultiplystr+“/”+分母Multiplystr;
}

同时更改“Main.java” 打印行至:

系统输出打印(“乘法结果:+分数乘法(num1,denom1,num2,denom2));

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