Java中的分数乘法器自定义方法
我正在使用JB IntelliJ IDEA并试图创建一个程序,其中包含类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
分数
和方法乘法
,将两个分数相乘,并应返回和打印如下内容:“乘法结果: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)));