所以我们必须创建一个Rational类来执行以下操作。用Java创建一个包含Rational类的项目。类表示有理数。它应该只有两个字段num和denom。它应该有以下公共方法(以及所需的任何其他私有方法):
- 一个构造函数,它将num和denom(按顺序)作为初始字段值。如果denom为0,请将数字设置为0/1
- num(getNum)的访问器
- denom(getDenom)的访问器
- 一个toString方法,返回形式为"num/denom"(无空格)的String,其中num和denom具有存储的值
- 一个加法方法,它取一个Rational数r,并返回一个Rational值,该Rational值是将r加到这个Rational数上的结果。它不应该改变这个有理数
- (额外学分-2分)一个没有参数的reduce方法,它将这个Rational数减少到最低形式
我有我在Intellij IDEA中完成的代码,但它不允许我运行该程序。我知道我在大多数事情上都会出错,但我相信这只是因为我没有把一些东西放在正确的地方或遗漏了一些东西。这就是我到目前为止所拥有的。
import java.util.Scanner;
public class Rational {
private int num;
private int den; //fields
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("")
public Rational( int n, int d){
num = n;
den = d;
if (d == 0) {
num = 0;
den = 1;
System.out.println("Denominator is 0. Enter a number other than 0 next time.");
}//close if
int g = gcd(num, den);
num = n / g;
den = d / g;
}//close Rational
public String toString() {
if (den == 1) {
return num + "";
} else {
return num + "/" + den;
}
}//close toString
private Rational add(Rational r) {
int newNum = (this.num * r.den) + (r.num * this.den);
int newDen = r.den * this.den;
return new Rational(newNum, newDen);
}//close add
private static int gcd(int m, int n) {
if (0 == n) {
return m;
} else {
return gcd(n, m % n);
}//close else
}//close gcd
}//close main
}//close class
public Rational(int n, int d){ // put Your Constructor Out of the main First
num = n;
den = d;
if (d == 0) {
num = 0;
den = 1;
System.out.println("Denominator is 0. Enter a number other than 0 next time.");
}//close if
int g = gcd(num, den);
num = n / g;
den = d / g;
}//close Rational
}
public String toString() { //put methods Outside of Main
if (den == 1) {
return num + "";
} else {
return num + "/" + den;
}
}//close toString
private Rational add(Rational r) { //put methods Outside of Main
int newNum = (this.num * r.den) + (r.num * this.den);
int newDen = r.den * this.den;
return new Rational(newNum, newDen);
}//close add
private static int gcd(int m, int n) { //put methods Outside of Main
if (0 == n)
return m;
else
return gcd(n, m % n);
}//close gcd
public static void main (String [] args) { //here is your Main Method.
System.out.println("");
// call Your Methods Accordingly.
} // main Closed
} //class Closed
- 您已将Constructor放入
main
方法中。它应该在主盒子外面 - 您定义的每个方法都存在于
main
方法中。再次出现编译错误 - 您可以使用任何类
object
(If Instance方法)或直接使用类名(If Static方法)从main
内部调用这些方法