10 of 20 tests pass

This commit is contained in:
Arti Zirk 2016-10-17 21:14:13 +02:00
parent b9ed53ac27
commit 17d4bef66e
1 changed files with 37 additions and 13 deletions

View File

@ -10,28 +10,33 @@ public class Lfraction implements Comparable<Lfraction> {
// TODO!!! Your debugging tests here // TODO!!! Your debugging tests here
} }
// TODO!!! instance variables here private long nu;
private long de;
/** Constructor. /** Constructor.
* @param a numerator * @param a numerator
* @param b denominator > 0 * @param b denominator > 0
*/ */
public Lfraction (long a, long b) { public Lfraction (long a, long b) {
// TODO!!! if (b < 1) {
throw new RuntimeException("Denominator can't be 0 or less");
}
this.nu = a;
this.de = b;
} }
/** Public method to access the numerator field. /** Public method to access the numerator field.
* @return numerator * @return numerator
*/ */
public long getNumerator() { public long getNumerator() {
return 0L; // TODO!!! return this.nu;
} }
/** Public method to access the denominator field. /** Public method to access the denominator field.
* @return denominator * @return denominator
*/ */
public long getDenominator() { public long getDenominator() {
return 1L; // TODO!!! return this.de;
} }
/** Conversion to string. /** Conversion to string.
@ -39,7 +44,7 @@ public class Lfraction implements Comparable<Lfraction> {
*/ */
@Override @Override
public String toString() { public String toString() {
return null; // TODO!!! return ""+Long.toString(this.nu)+"/"+Long.toString(this.de);
} }
/** Equality test. /** Equality test.
@ -48,7 +53,21 @@ public class Lfraction implements Comparable<Lfraction> {
*/ */
@Override @Override
public boolean equals (Object m) { public boolean equals (Object m) {
return false; // TODO!!! Lfraction other = (Lfraction) m;
if (other.de == this.de) {
return this.nu == other.nu;
} else {
double dif;
if (other.de > this.de) {
dif = other.de / this.de;
} else {
dif = this.de / other.de;
}
System.out.println("dif = " + dif);
return (this.nu*dif) == other.nu;
}
} }
/** Hashcode has to be equal for equal fractions. /** Hashcode has to be equal for equal fractions.
@ -79,7 +98,12 @@ public class Lfraction implements Comparable<Lfraction> {
* @return inverse of this fraction: 1/this * @return inverse of this fraction: 1/this
*/ */
public Lfraction inverse() { public Lfraction inverse() {
return null; // TODO!!! if (this.nu < 1) {
return new Lfraction(-this.de, -this.nu);
} else {
return new Lfraction(this.de, this.nu);
}
} }
/** Opposite of the fraction. n/d becomes -n/d. /** Opposite of the fraction. n/d becomes -n/d.
@ -119,14 +143,14 @@ public class Lfraction implements Comparable<Lfraction> {
*/ */
@Override @Override
public Object clone() throws CloneNotSupportedException { public Object clone() throws CloneNotSupportedException {
return null; // TODO!!! return new Lfraction(this.nu, this.de);
} }
/** Integer part of the (improper) fraction. /** Integer part of the (improper) fraction.
* @return integer part of this fraction * @return integer part of this fraction
*/ */
public long integerPart() { public long integerPart() {
return 0L; // TODO!!! return this.nu/this.de;
} }
/** Extract fraction part of the (improper) fraction /** Extract fraction part of the (improper) fraction
@ -141,7 +165,7 @@ public class Lfraction implements Comparable<Lfraction> {
* @return numeric value of this fraction * @return numeric value of this fraction
*/ */
public double toDouble() { public double toDouble() {
return 0.; // TODO!!! return new Double(this.nu)/this.de;
} }
/** Double value f presented as a fraction with denominator d > 0. /** Double value f presented as a fraction with denominator d > 0.
@ -159,7 +183,7 @@ public class Lfraction implements Comparable<Lfraction> {
* @return fraction represented by s * @return fraction represented by s
*/ */
public static Lfraction valueOf (String s) { public static Lfraction valueOf (String s) {
return null; // TODO!!! String[] parts = s.split("/");
return new Lfraction(Long.parseLong(parts[0]), Long.parseLong(parts[1]));
} }
} }