我需要编写一个java-class“Fraction”。
这个类应该能够理解基本的算术运算,如+, - ,*,/。我找到了许多“分数”类并理解它们,但都使用“ f1.add(f2); ”等方法(f1,f2是分数的对象,例如:
f1 = new Fraction(1,5);
f2 = new Fraction(2,5);
我需要的是直接操作,例如整数操作,例如:
**f1 = f1 + f2;**
而不是
f1.add(f2);
答案 0 :(得分:6)
你不能:java不允许重载运算符。
答案 1 :(得分: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
类。
答案 2 :(得分:0)
正如eternay所说,Java不支持运营商重载。您可以查看Groovy。它是一种类似Java的基于JVM的语言,它支持运算符重载。
答案 3 :(得分:0)
如果您对基于JVM的支持运算符重载的语言感兴趣,可以尝试使用Groovy。 在这里看一些讨论: Operator overloading in Java