0

これは、私がまだ問題を抱えている先週投稿した質問の続きです。データ型が BigInteger の 2 つのプライベート インスタンス変数 num と den を含む Rational クラスを作成しようとしています。Rational コンストラクターは、パラメーターとして 2 つの int を取ります。

私の問題は、Rational クラスの Eclipse で add メソッドまたは Multiply メソッドを記述するたびにエラーが発生することです。なぜエラーになるのかわかりません。私が理解しているように、演算子 +、-、*、/ はプリミティブ データ型でのみ使用できます。プライベート インスタンス変数は BigInteger であるため、それらは非プリミティブ データ型であり、加算または乗算は加算または乗算メソッドを使用して行う必要があります。

以下のコードではエラーが発生しますが、その理由はわかりません。コードの何が概念的に間違っているのかわかりません。エラーの理由は、メソッドで this.num/this.den/r.num/r.den を使用することに関する概念的なものですか、それともエラーは構文に関連するものと関係がありますか? 加算メソッドと乗算メソッドのエラーは同じで、「コンストラクター Rational(BigInteger,BigInteger) は未定義です」と表示されます。

public class Rational{


  public Rational(int x, int y) {
      num = BigInteger.valueOf(x);
      den = BigInteger.valueOf(y);
 }

  public Rational add(Rational r) {
     return new Rational(this.num.multiply(r.den).add(r.num.multiply(this.den)), this.den.multiply(r.den));
}

 public Rational multiply(Rational r) {
      return new Rational(this.num.multiply(r.num), this.den.multiply(r.den));
}


private BigInteger num;
private BigInteger den
}
4

1 に答える 1

6

定義したコンストラクターはint、引数として 2 を受け取ります。

 public Rational(int x, int y) {
      num = BigInteger.valueOf(x);
      den = BigInteger.valueOf(y);
 }

two を渡しているため、コンパイラは文句を言いますBigIntegers

新しいオーバーロードされたコンストラクターを持つ

 public Rational(BigInteger x, BigInteger y) {
      num = x;
      den = y;
 }
于 2013-09-04T02:31:41.883 に答える