2

Java クラスの「Fraction」をプログラムする必要があります。

このクラスは、+、-、*、/ などの基本的な算術演算を理解できる必要があります。多くの「Fraction」クラスを見つけて理解しましたが、すべて「f1.add(f2);」のようなメソッドを使用します (f1、f2 は Fraction のオブジェクトです。例:

f1 = new Fraction(1,5);
f2 = new Fraction(2,5);

必要なのは、整数の操作のような直接操作です。たとえば、次のようになります。

**f1 = f1 + f2;**

それ以外の

f1.add(f2);
4

4 に答える 4

6

できません: java は演算子のオーバーロードを許可していません。

于 2013-06-04T15:34:57.483 に答える
1

これは、標準 Java では不可能です。

コメントで明示的に尋ねたように: Scalaは ( Groovyとは対照的に) タイプセーフであり (他の多くの利点の中でも)、JVM 言語でもあるため、お勧めします。

class Fraction(val n: Int, val d: Int) {
  override def toString = s"$n/$d"

  def +(that: Fraction) = new Fraction(this.n + that.n, this.d)
}

object FractionDemo extends App {
  val f1 = new Fraction(1, 4)
  val f2 = new Fraction(2, 4)
  val f3 = f1 + f2
  println(s"$f1 + $f2 = $f3")
}

そして出力は

1/4 + 2/4 = 3/4

+正しく実装されていないことはわかっていますが、これはほんの一例です。

Scalaの数値ライブラリに興味がある場合は、 spireを見てください。すでにFractionalクラスがあります。

于 2013-06-04T16:06:50.303 に答える
0

eternay が言ったように、Java は演算子のオーバーロードをサポートしていません。Groovyを見ることができます。これは、演算子のオーバーロードをサポートする Java に似た JVM ベースの言語です。

于 2013-06-04T15:40:26.833 に答える
0

演算子のオーバーロードをサポートする JVM ベースの言語に興味がある場合は、Groovy を試すことができます。ここでいくつかの議論を参照してください: Javaでの演算子のオーバーロード

于 2013-06-04T15:41:27.870 に答える