我的 Rational 代码的主要方法
Main Method for My Rational Code
所以我已经完成了我的有理数测试代码,包括有理数的加法、减法等。我一直在尝试制作实际输出代码的主要 class。
这是我的 Rational class 代码:
package rational;
public class Rational {
private static int gcd(int u, int v) {
if (u == 0) {
return v;
} else if (v == 0) {
return u;
} else if (u == 1 || v == 1) {
return 1;
}
int temp;
while (v != 0) {
temp = u % v;
u = v;
v = temp;
}
return u;
}
private static Rational reduce(Rational num) {
int gcd = gcd(num.getNumerator(), num.getDenominator());
return new Rational(num.getNumerator() / gcd, num.getDenominator() / gcd);
}
private static Rational neg(Rational num) {
return new Rational(-(num.getNumerator()), num.getDenominator());
}
public static Rational add(Rational a, Rational b) {
return reduce(new Rational(a.getNumerator() * b.getDenominator() + a.getDenominator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
}
public static Rational subtract(Rational a, Rational b) {
return add(a, neg(b));
}
public static Rational multiply(Rational a, Rational b) {
return reduce(new Rational(a.getNumerator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
}
public static Rational divide(Rational a, Rational b) {
return multiply(a, new Rational(b.getDenominator(), b.getNumerator()));
}
public static String getString(Rational num) {
return String.format("%d/%d", num.getNumerator(), num.getDenominator());
}
public static String getFloatString(Rational num) {
return getFloatString(num, 6);
}
public static String getFloatString(Rational num, int fixedTo) {
return String.format("%." + fixedTo + "f", num.getNumerator() / ((float) num.getDenominator()));
}
private final int numerator;
private final int denominator;
public Rational() {
this(0, 1); // Note that division by zero is not allowed
}
public Rational(int numerator, int denominator) {
if (denominator == 0) {
throw new ArithmeticException("Division by zero");
}
this.numerator = numerator;
this.denominator = denominator;
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
}
首先如果你想在你Rational
class中创建一个main方法,然后调用你的方法:
您可以像这样创建一个主要方法:
public static void main(String[] args) {
//Create a Rational with an empty constructor
Rational r1 = new Rational();
int numerator = 1, denominator = 2;
//Create a Rational with an the second constructor that take two int
Rational r2 = new Rational(numerator, denominator);
//then you can use your methods like this.
r2.gcd(numerator, numerator);
}
就像您可以调用您的方法一样,该方法采用具有相同对象的 Rational 对象 r2
例如:
r1.reduce(r2);
或
r2.reduce(r2);
备注
如果您想在另一个 class 中创建一个 main 方法,请确保将您的方法更改为 puclic
希望对您有所帮助。
所以我已经完成了我的有理数测试代码,包括有理数的加法、减法等。我一直在尝试制作实际输出代码的主要 class。
这是我的 Rational class 代码:
package rational;
public class Rational {
private static int gcd(int u, int v) {
if (u == 0) {
return v;
} else if (v == 0) {
return u;
} else if (u == 1 || v == 1) {
return 1;
}
int temp;
while (v != 0) {
temp = u % v;
u = v;
v = temp;
}
return u;
}
private static Rational reduce(Rational num) {
int gcd = gcd(num.getNumerator(), num.getDenominator());
return new Rational(num.getNumerator() / gcd, num.getDenominator() / gcd);
}
private static Rational neg(Rational num) {
return new Rational(-(num.getNumerator()), num.getDenominator());
}
public static Rational add(Rational a, Rational b) {
return reduce(new Rational(a.getNumerator() * b.getDenominator() + a.getDenominator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
}
public static Rational subtract(Rational a, Rational b) {
return add(a, neg(b));
}
public static Rational multiply(Rational a, Rational b) {
return reduce(new Rational(a.getNumerator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
}
public static Rational divide(Rational a, Rational b) {
return multiply(a, new Rational(b.getDenominator(), b.getNumerator()));
}
public static String getString(Rational num) {
return String.format("%d/%d", num.getNumerator(), num.getDenominator());
}
public static String getFloatString(Rational num) {
return getFloatString(num, 6);
}
public static String getFloatString(Rational num, int fixedTo) {
return String.format("%." + fixedTo + "f", num.getNumerator() / ((float) num.getDenominator()));
}
private final int numerator;
private final int denominator;
public Rational() {
this(0, 1); // Note that division by zero is not allowed
}
public Rational(int numerator, int denominator) {
if (denominator == 0) {
throw new ArithmeticException("Division by zero");
}
this.numerator = numerator;
this.denominator = denominator;
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
}
首先如果你想在你Rational
class中创建一个main方法,然后调用你的方法:
您可以像这样创建一个主要方法:
public static void main(String[] args) {
//Create a Rational with an empty constructor
Rational r1 = new Rational();
int numerator = 1, denominator = 2;
//Create a Rational with an the second constructor that take two int
Rational r2 = new Rational(numerator, denominator);
//then you can use your methods like this.
r2.gcd(numerator, numerator);
}
就像您可以调用您的方法一样,该方法采用具有相同对象的 Rational 对象 r2
例如:
r1.reduce(r2);
或
r2.reduce(r2);
备注
如果您想在另一个 class 中创建一个 main 方法,请确保将您的方法更改为 puclic
希望对您有所帮助。